如何解决为什么 OpenGL 将相同的缓冲区分配给两个不同的 VAO?
我在具有两组不同对象的两个不同 VAO 上使用 glBufferSubData
(我在其中一个中使用实例化渲染)。问题是,当我使用 RenderDoc 分析渲染调用时,我发现它们共享相同的内部缓冲区(我认为这不应该发生)。我确定在执行 glBufferSubData
并更新其对应属性时绑定不同的 VAO,但我不明白为什么 OpenGL 会使两组对象具有相同的缓冲区。有谁知道为什么会发生这种情况,是否有任何解决方案?
如果有用,其中一个缓冲区很大(1527864 字节),另一个也不小。
解决方法
glBufferSubData
不关心 VAO,它会影响缓冲区(也称为 VBO)。
如果你想把数据放在两个不同的缓冲区,那么你需要用glBindBuffer(GL_ARRAY_BUFFER)
绑定第一个缓冲区,调用glBufferSubData
,然后绑定另一个缓冲区,调用glBufferSubData
。 (与 glBufferData
相同)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。