我正在使用 glBufferData 来保存一些用于渲染的信息。
glBufferData(GL_ARRAY_BUFFER, vertex_size * sizeof(VertexData), vertices, GL_DYNAMIC_DRAW);
Run Code Online (Sandbox Code Playgroud)
其中顶点保存每个顶点的数据。我稍后更改了顶点数据以呈现不同的图像。但是,它仍然显示原始的。我相信将 GL_STATIC_DRAW 更改为 GL_DYNAMIC_DRAW 应该可以解决问题,但它失败了。我该怎么做?
要更新整个缓冲区,您应该glBufferData()
再次调用:
glBufferData(GL_ARRAY_BUFFER, vertex_size * sizeof(VertexData), vertices, GL_DYNAMIC_DRAW);
Run Code Online (Sandbox Code Playgroud)
此外,可以使用以下glBufferSubData()
调用仅更新部分数据:
glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
Run Code Online (Sandbox Code Playgroud)
将glBufferSubData()
更快,因为它不会重新分配基础缓冲区。
归档时间: |
|
查看次数: |
5290 次 |
最近记录: |