【发布时间】:2017-09-05 15:21:05
【问题描述】:
我刚刚尝试更新一个顶点缓冲区对象 (vbo),其中包含带有静态绘制的数据。为什么我可以用glBufferSubData 更新它?我一直认为静态 vbo 是不能改的。
【问题讨论】:
我刚刚尝试更新一个顶点缓冲区对象 (vbo),其中包含带有静态绘制的数据。为什么我可以用glBufferSubData 更新它?我一直认为静态 vbo 是不能改的。
【问题讨论】:
GL_STATIC_DRAW 不代表不能更改数据。 glBufferData 的 usage 参数是对底层实现的提示,可能允许一些性能改进,但不限制实际使用。 documentation 声明:
usage 是 GL 实现关于如何访问缓冲区对象的数据存储的提示。这使 GL 实现能够做出更智能的决策,这些决策可能会显着影响缓冲区对象的性能。但是,它并不限制数据存储的实际使用。
【讨论】:
这些只是用法提示。该规范明确指出:
usage被指定为九个枚举值之一。 [这九个枚举值的描述如下]
usage仅作为性能提示提供。指定的使用值不限制数据存储的实际使用模式。
(OpenGL 4.6 core profile specification,第 6.2 节“创建和修改缓冲区对象数据存储”,第 68-69 页)
【讨论】: