14

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

我的伪工作流程是:

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

4

1 回答 1

23

两者都有效。

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

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

另请参阅 OpenGL Insights 的第 28 章(免费: http: //openglinsights.com/

于 2012-09-03T08:45:07.277 回答