0

大约一半的网格使用三角形,另一半使用三角形风扇。我想将这些卸载到顶点缓冲区对象中,但我不太确定如何执行此操作。三角扇都有不同数量的顶点......例如,一个可能有 5 个,另一个可能有 7 个。

VBO 使用普通三角形相当直接,但是我不确定如何将它们与三角形风扇或不同的三角形类型一起使用。我很确定我需要一个索引缓冲区,但我不太确定我需要做什么。

我知道在运行时每个风扇有多少个顶点......我想我可以用它来调用类似的东西glArrayElement

在这里的任何帮助将不胜感激!

4

1 回答 1

2

VBO 和索引缓冲区是正交的东西。如果您还没有使用索引缓冲区,那么一次移动一步可能更明智。

所以......关于你的问题。如果你把你所有的三角形风扇都放在一个 vbo 中,你唯一需要绘制它们的就是设置你的 vbo 并将索引传递给你的风扇启动

   glBindBuffer(GL_VERTEX_BUFFER, buffer);
   glVertexPointer(3, GL_FLOAT, 0, NULL); // 3 floats per vertex
   for each i in fans
       glDrawArrays(GL_TRIANGLE_FAN, indef_of_first_vertex_for_fan[i], fan_vertex_count[i])

编辑:我不得不说你最好将你的粉丝转换成一个规则的三角形集,并glDrawArrays(GL_TRIANGLES)用于你所有的三角形。每个原语的调用很少有效。

于 2009-10-15T08:41:40.193 回答