如何直接更新VBO顶点数据?

时间:2013-05-01 06:12:40

标签: iphone opengl-es

我有一个顶点缓冲区和一个索引缓冲区来渲染多边形网格。 我想操纵N个顶点的位置(独立于其他相邻顶点移动它们)。

我该怎么做?

我当然希望我不必回到使用glDrawArrays(而不是glDrawElements)。我花了很长时间才弄清楚顶点/索引缓冲区渲染。

1 个答案:

答案 0 :(得分:0)

如果使用glBufferSubData更新数据,可能会获得稍微好一点的性能,特别是如果您可以避免更新所有缓冲区而只是更新缓冲区。除非您将顶点动画移动到顶点着色器中,否则每次移动顶点时(您的用户都需要)更新顶点缓冲区,并且glBuffer(Sub)数据是您最好的选择。

编辑:将VBO创建为DYNAMIC,如果经常进行更改,请创建两个缓冲区并使用双缓冲方法,以避免性能损失,因为这样您可以在gpu使用其他缓冲区时写入数据渲染。