Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么OpenGL将相同的缓冲区分配给两个不同的VAO?_Opengl_Graphics_Buffer_Game Development - Fatal编程技术网

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

为什么OpenGL将相同的缓冲区分配给两个不同的VAO?,opengl,graphics,buffer,game-development,Opengl,Graphics,Buffer,Game Development,我在两个具有两组不同对象的不同VAO上使用glBufferSubData(我在其中一个对象中使用实例渲染)。问题是,当我使用RenderDoc分析render调用时,我看到它们共享相同的内部缓冲区(我认为不应该发生这种情况)。我确信在执行glBufferSubData并更新它们相应的属性时绑定不同的VAO,但我不明白为什么OpenGL会使这两组对象具有相同的缓冲区。有人知道为什么会这样吗?有没有解决办法 如果有用,一个缓冲区相当大(1527864字节),另一个也不小。glBufferSubDat

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


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

glBufferSubData
不关心VAOs,它会影响缓冲区(又称VBOs)


如果要将数据放入两个不同的缓冲区,则需要使用
glBindBuffer(GL\u ARRAY\u buffer)
绑定第一个缓冲区,调用
glBufferSubData
,然后绑定另一个缓冲区,并调用
glBufferSubData
。(与
glBufferData
相同)

一般来说,OpenGL会按照您所说的去做。如果VAO使用相同的缓冲区,那是因为您让它这么做。没有你的代码,我们帮不了你。此外,不能在VAO上使用
glBufferSubData
,因为这是一个缓冲区对象操纵函数,而VAO不是缓冲区对象。所以你似乎对你正在做的事情感到困惑。谢谢你,我在那之前用了一个VAO画画,我错把它当成了VBO。改变它解决了这个错误