我正在使用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()
更快,因为它不会重新分配底层缓冲区。
glBufferData()
函数并提供新的数据是可以正常工作的。请发布一个SSCCE。 - genpfault