在OpenGL中构建网格

时间:2012-11-10 00:10:10

标签: c++ c algorithm opengl mesh

我正在做一些OpenGL(2.1)测试,在尝试创建一个简单的多维数据集时,我想知道如何制作复杂的网格物体。对于我的立方体,我只需用GL_TRIANGLES设置每个顶点。但我不知道如何在循环中做同样的事情。由于顶点的顺序,并且因为有很多重复的顶点!

我真的必须通过设置3个顶点“一次”(两个三角形)来制作一个面孔?这似乎很慢。如何优化?

enter image description here

制作/加载网格物体有哪些技巧?

哦,我会很感激一些例子。

1 个答案:

答案 0 :(得分:5)

杰森格雷戈里的“游戏引擎架构”一书给出了你的问题的答案。以下是它的说法:

  

定义网格的最简单方法是以组的形式复制vectices   三[...]这种数据结构称为三角列表。 [...]您可能已经注意到许多顶点都是重复的,通常是多次[...]因此,大多数引擎都使用了更高效的数据结构,称为索引三角形列表

索引三角形列表背后的想法是将顶点存储在单独的顶点缓冲区中,并将索引存储在单独的索引缓冲区中。

同一章还建议使用三角形条(GL_TRIANGLE_STRIP)和粉丝(GL_TRIANGLE_FAN

可以找到关于顶点缓冲区对象索引的教程here