美文网首页
OpenGL中的VAO和VBO

OpenGL中的VAO和VBO

作者: Closears | 来源:发表于2017-09-17 19:52 被阅读395次

对我来说,这是两个非常容易忘的概念,细节也不太好记忆。所以我简单粗暴地总结一下二者。可能未必精确,但get到了大致思想即可。

VBO:Vertex Buffer Object,顶点缓冲对象。
可以存储大量顶点,因而我们可以利用VBO一次性发送一大批数据到显卡上。

VAO:Vertex Array Object,顶点数组对象。
一个VAO,配置并告诉了我们该如何使用VBO(包括如何解读VBO中的数据),以及使用哪个VBO。

为了了解VAO究竟存了什么,我执行了一个小测试。
我把绑定VAO的那句代码:glBindVertexArray(cubeVAO)分别放在了三个位置。
Position 1: 绑定并配置VBO之前。
Position 2: 绑定并配置VBO之后,配置顶点属性之前。
Position 3: 配置顶点属性之后。
如下图所示:

a test about VAO
运行结果如下:Position1与Position2都正常,且没有任何区别;Position3不正常(显而易见:))

据我分析,Position1与Position2之所以运行结果相同,源于OpenGL的状态机模式。Position1自然不必多说,走的是正常流程。Position2的话,由于我们已经先行绑定了VBO,在状态机模式下,当我们开始绑定VAO的时候,此时的VBO尚未被解绑,所以相当于VAO在绑定和配置过程中,隐含地包含了一个绑定中的VBO。

相关文章

  • [OpenGL]VBO,VAO和EBO详解

    这篇文章通过几个简单实例,讨论了OpenGL编程中的 VBO,VAO 和 EBO 概念。 1. VBO 和 VAO...

  • Opengl ES之VBO和VAO

    前言 本文主要介绍了什么是VBO/VAO,为什么需要使用VBO/VAO以及如何使用VBO和VAO。 VBO 什么是...

  • OpenGL中的VAO和VBO

    对我来说,这是两个非常容易忘的概念,细节也不太好记忆。所以我简单粗暴地总结一下二者。可能未必精确,但get到了大致...

  • opengl绘制三角形

    步骤 编译和链接着色器程序 创建并且绑定VAO, VBO, EBO 使用着色器程序和VAO,并且渲染 VBO 用来...

  • 学习OpenGL ES之VBO&VAO

    本系列所有文章目录 获取示例代码 本文将要介绍OpenGL ES的一个优化技巧,使用VBO和VAO减少CPU和GP...

  • OpenGL学习(二) GLSL语言基础

    前言 我们对顶点数组对象(VAO)和顶点缓存对象(VBO)有了初步的印象之后。我们可以继续接触另一个OpenGL有...

  • Opengl ES之EBO

    前面我们介绍了VBO与VAO等缓冲对象,今天我们来介绍一下EBO。 对于VBO或VAO可以查看之前的文章:Open...

  • VBO、VAO

    VBO(Vertex Buffer Objects)顶点缓冲对象 在显卡存储空间中开辟一块区域,用于存放顶点的各类...

  • VAO & VBO

    VAO -> Vertext Array Object ->顶点数组VBO -> Vertext Buffer ...

  • 音视频开发 四:VBO和FBO

      大家好,今天来学习OpenGL中的俩个重要概念,顶点缓冲对象(VBO)和帧缓冲对象(FBO)。   VBO  ...

网友评论

      本文标题:OpenGL中的VAO和VBO

      本文链接:https://www.haomeiwen.com/subject/ahdmsxtx.html