Ich denke an eine Minecraft-Szene, in der mit Voxel eine Welt von Blöcken gemeint ist, die tatsächlich mit Polygonen gerendert werden:
Wenn Sie einen Geometrie-Shader verwenden, ist es schwierig, genau drei Flächen (oder was auch immer) pro Voxel zu vermeiden.
Wenn Sie viele benachbarte Blöcke haben, die die gleiche Textur haben, können Sie das Kacheln der Texturen verwenden, um in einem VBO-Ansatz viel weniger Dreiecke in Ihrem (entarteten) Streifen zu haben. Ich meine, wenn es eine schöne große, flache 6x6-Fläche mit Grasvoxeln gibt, können Sie die gesamte Oberseite in nur zwei Dreiecken anstatt in 64 zeichnen.
Mit dem GS-Ansatz können Sie die triviale Auslese von Gesichtern, die von benachbarten Voxeln verdeckt werden, nicht durchführen, was auch mit einem VBO-Ansatz sehr einfach ist.
Ich habe den GS-Ansatz nicht ausprobiert, aber ich kann sagen, dass der VBO-Ansatz mit dem Kombinieren von sich wiederholenden benachbarten Kacheln sehr gut funktioniert. Ich fand, dass das Durcheinander mit Elementindizes viel langsamer ist, als nur die Eckpunkte zu wiederholen. Wenn Sie Ihre Welt in schöne kleine Würfel aufteilen, können Sie in der Regel nur ein Byte pro Komponente und Scheitelpunkt verwenden und sogar die Texturinformationen und Normalen (eine Fläche auf einem achsenausgerichteten Würfel hat nur 3 mögliche Normalen) usw. in ein viertes Byte packen 4 Bytes pro Vertex, das ist schön und schnell.
Ich habe für jedes der 6 Gesichter separate VBOs verwendet - es müssen immer nur maximal 3 davon gezeichnet werden. Dies passt gut zu den verschiedenen Texturen, die normalerweise für die oberen Teile von Minecraft-Voxeln verwendet werden. Denn für jeden Satz ist das Normal und So dann einheitlich.
Mit vertikal gekachelten Pixmaps in einem Atlas mit GL_REPEAT
horizontaler Achse und um 90 Grad gedrehten Versionen der Pixmaps im selben Atlas kann ich mit demselben VBO im selben Aufruf massenhaft scheinbar unterschiedliche Blöcke zeichnen. Im 6x6-Grasflächenbeispiel hätte ich das in 12 Dreiecke aufgeteilt, da ich in meinem Atlas nur Wiederholungen in einer Dimension habe.
Ich habe es meistens auf das sehr niedrige Niveau von integrierten Grafikchips und Mobilgeräten gebracht, bei denen GS nur etwas ist, wovon ich träumen kann, wenn ich eines Tages damit spiele.