更新VBO中的顶点数据(glBufferSubData vs glMapBuffer)

时间:2012-09-03 08:31:46

标签: opengl vertex-buffer

我想在创建VBO后更新对象的顶点列表。我见过glBufferSubDataglMapBuffer,他们似乎都做了类似的事情,这意味着我现在不确定要使用哪一个。

我的伪工作流程是:

  

创建对象
  开始顶点更新(用data = nullptr调用glBufferData)
  更新对象的顶点
  结束顶点更新(获取更新的顶点并调用glBufferSubDataglMapBuffer

1 个答案:

答案 0 :(得分:22)

两者都有效。

如果您打算经常更新顶点(每帧左右),我建议避免使用glBufferSubData,这需要在驱动程序中再添加一个memcpy。 glMapBuffer / glMapBufferRange通常会为你提供更多的性能。

如果你很少更新,glBufferSubData就可以了。

另见OpenGL Insights第28章(免费:http://openglinsights.com/