OpenGL中VAO的目的是什么?

What is the purpose of VAO in OpenGL

本文关键字:是什么 OpenGL VAO      更新时间:2023-10-16

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

渲染时,我们使用VBO来存储数据,然后我们使用OpenGL函数,如:glAttribe来告诉GPU,我们将以"那种方式"使用这些数据,如:我们通过VBO的顶点的前3个浮点数实际上是位置,接下来的3个浮点数是颜色等……然后我读到我们需要一些VAO来存储顶点的描述但目标是什么呢?

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

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

这不仅对程序员来说更方便,它减少了所需的OpenGL调用的数量,从而减少了CPU的使用,从而可以清除CPU瓶颈。