当前位置: 首页 > 知识库问答 >
问题:

VAO在OpenGL中的作用是什么

安建木
2023-03-14

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

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

提前谢了。

共有1个答案

洪念
2023-03-14

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

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

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

 类似资料:
  • 我正在编写一个OpenGL3+应用程序,对VAOS的使用有些困惑。现在我只有一个VAO,一个围绕原点设置的正规化的四方。这个单个VAO包含3个VBO;一个用于位置,一个用于曲面法线,一个用于索引的GL_ELEMENT_ARRAY_BUFFER(所以我只能存储4个顶点,而不是6个)。 绑定四方vao. 每立方体面: 创建表示此面孔的模型矩阵。 将模型矩阵上载到顶点着色器变量。 调用将四边形绘制到这个

  • 我目前正在遵循ThinMatrix的OpenGL教程,使用VAO和VBOS进行渲染。我几乎完全复制了代码(唯一的区别是我使工厂类成为静态的,而不仅仅是正常的)。我可以看到我的程序版本和他的程序版本之间唯一的技术区别是我使用lwjgl 3而不是lwjgl 2。 以下是我的源代码: 我遇到的问题是,每当我试图运行项目时,它就会崩溃,并显示以下错误消息: 环顾四周,我发现了这个stackoverflow

  • 我试图在OpenGL中使用多个VAO和VBO渲染多个对象。使用相同的顶点渲染多个对象我已经做过了,但是我想做的是为每个对象使用不同的顶点,例如画一个正方形和一个圆形。对于一个正方形,我只需要6个顶点,但是对于圆,我需要360个顶点。我有阅读或创建着色器的错误。 以下是顶点着色器: 片段着色器: VAO和VBO的生成与绑定 以及渲染循环中的绘制调用: 我重复一遍,用我做过的相同顶点绘制多个对象。我需

  • 问题内容: Mocha官方站点上的文档包含以下示例: 我想知道什么时候应该将测试嵌套在函数中以及其基本目的是什么。我可以比较传递给编程语言的注释的第一个参数吗?控制台的输出中未显示任何内容。是仅出于可读性目的,还是该功能还有其他用途? 如果我这样使用,有什么问题吗? 如果我这样做,则测试仍会通过。 问题答案: 该调用会标识每个测试,但其本身不会告诉Mocha任何有关测试套件 结构的信息 。调用的使

  • 本文向大家介绍ZooKeeper在Kafka中的作用是什么?相关面试题,主要包含被问及ZooKeeper在Kafka中的作用是什么?时的应答技巧和注意事项,需要的朋友参考一下 答:Apache Kafka是一个使用Zookeeper构建的分布式系统。虽然,Zookeeper的主要作用是在集群中的不同节点之间建立协调。但是,如果任何节点失败,我们还使用Zookeeper从先前提交的偏移量中恢复,因为

  • 此类:HtmlString 使用: 它只是“构造”一个字符串并返回字符串本身! 有人能解释一下吗?非常感谢:)