Mam na myśli scenę typu Minecraft, w której woksel oznacza świat bloków, które są renderowane za pomocą wielokątów:
Jeśli użyjesz modułu cieniującego geometrię, trudno będzie uniknąć posiadania dokładnie trzech ścian (lub cokolwiek innego) na woksel.
Jeśli masz wiele sąsiadujących bloków, które mają tę samą teksturę, możesz użyć kafelkowania tekstur, aby mieć znacznie mniej trójkątów w swoim (zdegenerowanym) pasku w podejściu VBO. Mam na myśli, że jeśli jest ładny duży płaski obszar wokseli trawy 6x6, możesz narysować całą górę w zaledwie 2 trójkątach zamiast 64.
Dzięki podejściu GS nie można wykonać trywialnego usuwania twarzy zasłoniętego przez sąsiadujące woksele, co jest bardzo proste w przypadku podejścia VBO.
Nie próbowałem podejścia GS, ale mogę powiedzieć, że podejście VBO z łączeniem powtarzających się sąsiadujących płytek działa bardzo dobrze. Odkryłem, że bałagan w indeksach elementów jest znacznie wolniejszy niż tylko powtarzanie wierzchołków. Jeśli podzielisz swój świat na ładne małe kostki, zwykle możesz użyć tylko jednego bajtu na komponent na wierzchołek, a nawet spakować informacje o teksturze i normalne (powierzchnia na sześcianie wyrównanym do osi ma tylko 3 możliwe normalne) itp. 4 bajty na wierzchołek, co jest ładne i szybkie.
Użyłem osobnych VBO dla każdej z 6 twarzy - zawsze musisz tylko narysować najwyżej 3 z nich. Pasuje to ładnie z różnymi teksturami zwykle używanymi w górnej części wokseli w stylu Minecraft. Ponieważ dla każdego zestawu normalna i taka jest wówczas jednolita.
Za pomocą pionowych kafelków pixmap w atlasie z GL_REPEAT
osią poziomą i mając obrócone o 90 stopni wersje pixmap w tym samym atlasie odkryłem, że mogę narysować ogromne ilości pozornie różnych bloków przy użyciu tego samego VBO w tym samym wywołaniu. W przykładzie z trawą 6x6 podzieliłbym to na 12 trójkątów, ponieważ powtarzam tylko jeden wymiar w moim atlasie.
Pracowałem głównie na bardzo niskim poziomie zintegrowanych układów graficznych i urządzeń mobilnych, gdzie GS jest czymś, o czym mogę marzyć o jednym dniu gry.