我有一个用于组成四边形屏幕的顶点的VBO,我想在程序员请求调整图像大小时更改它。
它不会经常更改,只有当(and if)
有人请求调整图像大小时,我才认为我应该使用GL_STREAM_DRAW
。
调用此函数时,VBO
也已加载。
如何获取VBO
数据并仅更改几个值?
答案 0 :(得分:3)
您可以use glBufferSubData
仅修改缓冲区对象的一部分。但一般来说,您应该尝试收集所有将要更改为单个缓冲区的对象。这样,您可以一次更改所有这些,这将更有效。特别是如果您使用正确的streaming techniques。
说完了:
我有一个用于组成四边形屏幕的顶点的VBO,我想在程序员请求调整图像大小时更改它。
你不应该这样做。只需在X和Y的范围[-1,1]上传递四边形,不要用矩阵变换它。四边形将有效地位于NDC空间中,the system will transform to window space for you。屏幕大小的四边形不需要随屏幕大小而变化,只要你using glViewport
正确(无论如何都要做)。