我目前正在学习 OpenGL,而 VAO 让我感到困惑。据我了解,VAO 只是封装了 VBO 的状态。
Bind VAO
load buffer data
Disable VAO
然后你可以像这样画
activate VAO
DrawArray ...
deactivate VAO
但我不确定这在实践中是否真的有用。假设我有一个非常大的场景要渲染。也许 10 平方公里,我显然不想一次将每个对象加载到 GPU,我可能想将场景分成不同的块。
现在我四处走动,有一次我必须将另一块对象加载到 GPU 上,对吗?但据我所知,我无法更改 VAO,而且每次我的场景发生变化时,我都必须创建一个新的 VAO。
那么在我的场景中什么是 VAO?整个场景会是 VAO 吗?还是每个对象都是 VAO?
对我来说,拥有多个 VAO 并没有多大意义,因为我无法将 VAO 组合在一起,我只能像这样将它们叠加在一起
activate VAO1
DrawArray ...
deactivate VAO1
activate VAO2
DrawArray ...
deactivate VAO2