Saya sedang memikirkan adegan jenis minecraft, di mana voxel yang Anda maksud adalah dunia balok yang sebenarnya dirender menggunakan poligon:
Jika Anda menggunakan geometri shader akan sulit untuk menghindari memiliki tiga wajah (atau apa pun) per voxel.
Jika Anda memiliki banyak blok yang berdekatan yang memiliki tekstur yang sama maka Anda dapat menggunakan ubin tekstur untuk memiliki segitiga yang jauh lebih sedikit di strip Anda (degenerasi) dalam pendekatan VBO. Maksud saya, jika ada bidang rumput voxel besar 6x6 yang rata dan rata, Anda bisa menggambar seluruh bagian atasnya hanya dalam 2 segitiga daripada 64.
Dengan pendekatan GS Anda tidak dapat melakukan pemusnahan sepele wajah yang disumbat oleh voxel yang berdekatan yang sangat mudah dengan pendekatan VBO.
Saya belum mencoba pendekatan GS, tetapi saya bisa mengatakan bahwa pendekatan VBO dengan menggabungkan pengulangan ubin yang berdekatan bekerja dengan sangat baik. Saya menemukan mengacaukan dengan indeks elemen menjadi lebih lambat daripada hanya mengulangi simpul. Jika Anda membagi dunia Anda menjadi kubus kecil yang bagus, Anda biasanya dapat menggunakan hanya satu byte per komponen per simpul dan bahkan mengemas info tekstur dan normals (wajah pada kubus sejajar sumbu hanya memiliki 3 kemungkinan normal) dll menjadi byte keempat untuk membuat 4 byte per titik yang bagus dan cepat.
Saya telah menggunakan VBO terpisah untuk masing-masing dari 6 wajah - Anda hanya perlu menggambar paling banyak 3 dari mereka jelas. Ini cocok dengan tekstur yang berbeda yang biasanya digunakan pada bagian atas voxels bergaya minecraft. Karena untuk setiap set yang normal dan yang demikian itu seragam.
Dengan menggunakan pixmaps ubin vertikal di atlas dengan GL_REPEAT
pada sumbu horizontal dan memiliki versi diputar 90-derajat dari pixmap di atlas yang sama saya menemukan saya dapat menggambar sejumlah besar blok yang tampaknya berbeda menggunakan VBO yang sama dalam panggilan yang sama. Dalam contoh 6x6 area rumput, saya akan membaginya menjadi 12 segitiga karena saya hanya mengulang pada satu dimensi di atlas saya.
Saya sebagian besar telah mendapatkan ini untuk bekerja pada ujung yang sangat rendah dari chip grafis terintegrasi dan ponsel, di mana GS adalah sesuatu yang saya bisa mimpikan suatu hari bermain dengan.