【OpenGL学习笔记四】顶点数组对象VAO

在不使用VAO仅使用VBO进行绘图比如绘制一个三角形的步骤是

  1. 绑定缓冲对象以拿到顶点数据
  2. 配置顶点属性指针以便OpenGL知道如何解析顶点数据

之后每次绘制一个三角形都要重复执行以上步骤,但是上面的步骤的配置都是相同的,不需要重复执行,VAO就是用来解决这个问题的。

使用VAO,只需要将配置函数执行一次,之后再绘制该物体的时候只需要绑定该VAO即可。

VAO的使用非常简单,需要在使用VBO等之前使用下面两条语句绑定即可

unsigned int VAO;    
glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO);

之后对VBO进行的操作都会保存在VAO中,在对VBO的操作完成了之后,可以解绑VAO,在需要再次使用的时候再次绑定。

代码示例

    glGenVertexArrays(1, &VAO);
    glBindVertexArray(VAO);
    //把VBO绑定到顶点缓冲对象的缓冲类型GL_ARRAY_BUFFER上
    //绑定完之后相当于把VBO对象绑定到了OpenGL状态机的上下文中
    //接下来在GL_ARRAY_BUFFER上的所有操作都会改变VBO对象
    glGenBuffers(1,&VBO);//生成VBO对象,同时用一个ID来唯一标识这个缓冲对象
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    //把数据送到GPU
    glBufferData(GL_ARRAY_BUFFER, sizeof (vertices), vertices, GL_STATIC_DRAW);
    //告诉OpenGL如何解析GPU缓存中的数据
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3* sizeof (float),(void*)0);
    glEnableVertexAttribArray(0);

    glBindBuffer(GL_ARRAY_BUFFER, 0);
    glBindVertexArray(0);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值