微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 OpenGL 将相同的缓冲区分配给两个不同的 VAO?

如何解决为什么 OpenGL 将相同的缓冲区分配给两个不同的 VAO?

我在具有两组不同对象的两个不同 VAO 上使用 glBufferSubData(我在其中一个中使用实例化渲染)。问题是,当我使用 RenderDoc 分析渲染调用时,我发现它们共享相同的内部缓冲区(我认为这不应该发生)。我确定在执行 glBufferSubData 并更新其对应属性时绑定不同的 VAO,但我不明白为什么 OpenGL 会使两组对象具有相同的缓冲区。有谁知道为什么会发生这种情况,是否有任何解决方案?

如果有用,其中一个缓冲区很大(1527864 字节),另一个也不小。

解决方法

glBufferSubData 不关心 VAO,它会影响缓冲区(也称为 VBO)。

如果你想把数据放在两个不同的缓冲区,那么你需要用glBindBuffer(GL_ARRAY_BUFFER)绑定第一个缓冲区,调用glBufferSubData,然后绑定另一个缓冲区,调用glBufferSubData。 (与 glBufferData 相同)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。