为什么 OpenGL 将相同的缓冲区分配给两个不同的 VAO?
Why does OpenGL assign the same buffer to two different VAOs?
我在具有两组不同对象的两个不同 VAO 上使用 glBufferSubData
(我在其中一个中使用实例化渲染)。问题是,当我使用 RenderDoc 分析渲染调用时,我发现它们共享相同的内部缓冲区(我认为这不应该发生)。我肯定在执行 glBufferSubData
和更新它们对应的属性时绑定不同的 VAO,但我不明白为什么 OpenGL 会使两组对象具有相同的缓冲区。有谁知道为什么会这样,有没有解决办法?
如果有用的话,其中一个缓冲区很大(1527864 字节),另一个也不小。
glBufferSubData
不关心 VAO,它影响缓冲区(a.k.a。VBO)。
如果你想把数据放在两个不同的缓冲区,那么你需要用glBindBuffer(GL_ARRAY_BUFFER)
绑定第一个缓冲区,调用glBufferSubData
,然后绑定另一个缓冲区,调用glBufferSubData
. (与 glBufferData
相同)
我在具有两组不同对象的两个不同 VAO 上使用 glBufferSubData
(我在其中一个中使用实例化渲染)。问题是,当我使用 RenderDoc 分析渲染调用时,我发现它们共享相同的内部缓冲区(我认为这不应该发生)。我肯定在执行 glBufferSubData
和更新它们对应的属性时绑定不同的 VAO,但我不明白为什么 OpenGL 会使两组对象具有相同的缓冲区。有谁知道为什么会这样,有没有解决办法?
如果有用的话,其中一个缓冲区很大(1527864 字节),另一个也不小。
glBufferSubData
不关心 VAO,它影响缓冲区(a.k.a。VBO)。
如果你想把数据放在两个不同的缓冲区,那么你需要用glBindBuffer(GL_ARRAY_BUFFER)
绑定第一个缓冲区,调用glBufferSubData
,然后绑定另一个缓冲区,调用glBufferSubData
. (与 glBufferData
相同)