我正在使用 glBufferData 来保存一些渲染信息。
glBufferData(GL_ARRAY_BUFFER, vertex_size * sizeof(VertexData), vertices, GL_DYNAMIC_DRAW);
其中顶点保存每个顶点的数据。我稍后更改了顶点数据以渲染不同的图像。然而,它仍然显示原始的。我相信将 GL_STATIC_DRAW 更改为 GL_DYNAMIC_DRAW 应该可以解决问题,但失败了。我应该为此做什么?
最佳答案
要更新整个缓冲区,您应该再次调用 glBufferData()
:
glBufferData(GL_ARRAY_BUFFER, vertex_size * sizeof(VertexData), vertices, GL_DYNAMIC_DRAW);
此外,可以使用 glBufferSubData()
调用仅更新部分数据:
glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
glBufferSubData()
速度更快,因为它不会重新分配底层缓冲区。
关于qt - openGL glBufferData 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22514741/