OpenGL偶尔会改变VBO数据

时间:2013-08-27 03:47:24

标签: opengl vbo

我有一个用于组成四边形屏幕的顶点的VBO,我想在程序员请求调整图像大小时更改它。

它不会经常更改,只有当(and if)有人请求调整图像大小时,我才认为我应该使用GL_STREAM_DRAW。 调用此函数时,VBO也已加载。

如何获取VBO数据并仅更改几个值?

1 个答案:

答案 0 :(得分:3)

您可以use glBufferSubData仅修改缓冲区对象的一部分。但一般来说,您应该尝试收集所有将要更改为单个缓冲区的对象。这样,您可以一次更改所有这些,这将更有效。特别是如果您使用正确的streaming techniques

说完了:

  

我有一个用于组成四边形屏幕的顶点的VBO,我想在程序员请求调整图像大小时更改它。

你不应该这样做。只需在X和Y的范围[-1,1]上传递四边形,不要用矩阵变换它。四边形将有效地位于NDC空间中,the system will transform to window space for you。屏幕大小的四边形不需要随屏幕大小而变化,只要你using glViewport正确(无论如何都要做)。