OpenGL中VAO的用途是什么

pan*_*icq 1 c++ opengl

我开始学习现代 OpenGL,正如标题所说,我只是想确定 VAO 在渲染管道中的用途。

渲染时,我们使用 VBO 来存储数据,然后使用 OpenGL 函数,例如:glAttribe 向 GPU 表示我们将“以这种方式”使用这些数据,例如:前 3 个浮点在我们经过的顶点中vbo 实际上是位置,接下来的 3 个浮点数是颜色等...然后我读到我们需要一些 VAO 来存储顶点的描述,但是那里的目标是什么?

提前致谢。

Col*_*Two 5

顶点数组对象存储一组缓冲区名称(通常是顶点缓冲区和索引缓冲区)以从中获取顶点数据,以及顶点在顶点缓冲区中的布局方式。

它们的主要目的是,当你想要从一组不同的缓冲区渲染不同的模型时,你不必绑定每个缓冲区然后每次设置顶点属性格式,你只需绑定一个不同的VAO,并且所有缓冲区和属性都是为您设置。

这不仅对程序员来说更加方便,而且减少了所需的 OpenGL 调用次数,从而减少了 CPU 使用率,从而消除了 CPU 瓶颈。