qt - openGL glBufferData 的使用

标签 qt opengl buffer

我正在使用 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/

相关文章:

qt - 为什么有些 QtQuick 控件有隐藏变量?

c++ - Qt 4.8 : trying to sort QList<QStringList> on 1st element of QStringList as integer

logging - Log4Net RollingFileAppender 不会用低容量日志刷新 IO 缓冲区

c - C 中的刷新缓冲区

c++ - 需要帮助优化绘图代码...

c++ - 在QT中点击按钮创建按钮

c++ - OpenGL函数需要调用两次才能生效

c++ - 为什么必须同时使用 glBindBuffer 和 glBindBufferRange 在 OpenGL 中创建统一缓冲区?

opengl - 用于OpenGL着色器开发的图形卡

javascript - NODEJS SMB2 - 将缓冲区转换为日期和时间