在OpenGL中构建网格

Fab*_*cio 4 c c++ opengl algorithm mesh

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

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

在此输入图像描述

制作/加载网格的技巧是什么?

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

小智 5

Jason Gregory撰写的"游戏引擎架构"一书回答了你的问题.这是它说的:

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

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

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

有关顶点缓冲区对象索引的教程可以在这里找到