gpt4 book ai didi

c++ - 使用顶点缓冲对象渲染不同的三角形类型和三角形扇形? (OpenGL)

转载 作者:行者123 更新时间:2023-11-28 03:59:31 28 4
gpt4 key购买 nike

我的网格中大约一半使用三角形,另一半使用三角形扇形。我想将它们卸载到顶点缓冲区对象中,但我不太确定如何执行此操作。三角形风扇都有不同数量的顶点……例如,一个可能有 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com