我正在做一些OpenGL(2.1)测试,在尝试创建一个简单的多维数据集时,我想知道如何制作复杂的网格物体。对于我的立方体,我只需用GL_TRIANGLES
设置每个顶点。但我不知道如何在循环中做同样的事情。由于顶点的顺序,并且因为有很多重复的顶点!
我真的必须通过设置3个顶点“一次”(两个三角形)来制作一个面孔?这似乎很慢。如何优化?
制作/加载网格物体有哪些技巧?
哦,我会很感激一些例子。
答案 0 :(得分:5)
杰森格雷戈里的“游戏引擎架构”一书给出了你的问题的答案。以下是它的说法:
定义网格的最简单方法是以组的形式复制vectices 三[...]这种数据结构称为三角列表。 [...]您可能已经注意到许多顶点都是重复的,通常是多次[...]因此,大多数引擎都使用了更高效的数据结构,称为索引三角形列表
索引三角形列表背后的想法是将顶点存储在单独的顶点缓冲区中,并将索引存储在单独的索引缓冲区中。
同一章还建议使用三角形条(GL_TRIANGLE_STRIP
)和粉丝(GL_TRIANGLE_FAN
)
可以找到关于顶点缓冲区对象索引的教程here