Я думаю про сцену типу Minecraft, де під вокселем ви маєте на увазі світ блоків, які насправді відображаються за допомогою полігонів:
Якщо ви використовуєте шейдер для геометрії, буде важко уникнути наявності рівно трьох граней (або будь-яких) на воксель.
Якщо у вас є багато сусідніх блоків, що мають однакову текстуру, тоді ви можете використовувати плитку текстур, щоб у вашій (виродженій) смужці було набагато менше трикутників у підході VBO. Я маю на увазі, якщо є хороша велика плоска 6x6 трав'яних вокселів, ви можете намалювати всю вершину всього в 2 трикутники, а не в 64.
Із підходом GS ви не можете здійснити тривіальне відсікання облич, заткнутих суміжними вокселями, що дуже прямо і при підході VBO.
Я не пробував підхід GS, але можу сказати, що підхід VBO із поєднанням повторюваних суміжних плиток працює дуже добре. Я виявив, що возитися з індексами елементів набагато повільніше, ніж просто повторювати вершини. Якщо ви розділите свій світ на маленькі кубики, ви можете використовувати лише один байт на компонент на вершину та навіть упакувати інформацію про текстуру та нормали (обличчя на кубі, орієнтованому на вісь, має лише 3 можливі нормалі) тощо у четвертий байт, щоб зробити 4 байти на вершину, що приємно і швидко.
Я використав окремі VBO для кожної з 6 граней - вам потрібно коли-небудь намалювати максимум 3 з них, очевидно. Це добре поєднується з різними текстурами, які зазвичай використовуються у верхній частині вокселів у стилі minecraft. Тому що для кожного набору нормальне і таке тоді є рівномірним.
Використовуючи вертикально викладені пікселі в атласі з GL_REPEAT
горизонтальною віссю та маючи повернені на 90 градусів версії пікселів у тому ж атласі, я виявив, що я можу намалювати величезну кількість очевидно різних блоків, використовуючи один і той же VBO в одному дзвінку. У прикладі трави 6х6 я розділив би її на 12 трикутників, оскільки я повторюю лише один вимір у своєму атласі.
Здебільшого я отримую це для роботи над дуже низьким рівнем інтегрованих графічних чіпів і мобільних пристроїв, де GS - це те, про що я можу мріяти про один день, граючи.