我的网格中大约一半使用三角形,另一半使用三角形扇形。 我想将它们卸载到顶点缓冲区对象中,但我不太确定如何执行此操作。三角形风扇都有不同数量的顶点……例如,一个可能有 5 个,另一个可能有 7 个。
VBO 使用普通三角形非常简单,但我不确定如何将它们与三角形风扇或不同的三角形类型一起使用。我很确定我需要一个索引缓冲区,但我不太确定我需要做什么。
我知道在运行时有多少个顶点组成每个扇形......我想我可以用它来调用类似 glArrayElement
如有任何帮助,我们将不胜感激!
最佳答案
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)
为您的所有三角形。每个基元的调用很少有效率。
关于c++ - 使用顶点缓冲对象渲染不同的三角形类型和三角形扇形? (OpenGL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1569939/