在OpenGL中,VAO起什么作用

在OpenGL中,顶点数组对象(Vertex Array Object, VAO)是一个用于存储顶点缓冲对象(Vertex Buffer Object, VBO)和顶点属性指针设置的OpenGL对象。使用VAO可以简化绘制物体的过程,因为它会记录所有与顶点属性相关的配置,这样我们只需在绘制时绑定对应的VAO,OpenGL就会自动恢复之前的设置。

设置VAO的基本步骤如下:

  1. 生成一个顶点数组对象
  2. 绑定顶点数组对象
  3. 创建和绑定一个顶点缓冲对象
  4. 向顶点缓冲对象中填充顶点数据
  5. 设置顶点属性指针
  6. 解绑顶点数组对象和顶点缓冲对象

#include <GL/glew.h>
#include <GLFW/glfw3.h>

// 顶点数据
float vertices[] = {
    -0.5f, -0.5f, 0.0f,  // 左下角
     0.5f, -0.5f, 0.0f,  // 右下角
     0.0f,  0.5f, 0.0f   // 顶点
};

int main() {
    // ... 初始化OpenGL和GLFW的代码 ...

    // 1. 生成一个顶点数组对象
    GLuint VAO;
    glGenVertexArrays(1, &VAO);

    // 2. 绑定顶点数组对象
    glBindVertexArray(VAO);

    // 3. 创建和绑定一个顶点缓冲对象
    GLuint VBO;
    glGenBuffers(1, &VBO);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);

    // 4. 向顶点缓冲对象中填充顶点数据
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

    // 5. 设置顶点属性指针
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
    glEnableVertexAttribArray(0);

    // 6. 解绑顶点数组对象和顶点缓冲对象
    glBindVertexArray(0);
    glBindBuffer(GL_ARRAY_BUFFER, 0);

    // ... 渲染循环等其他代码 ...

    // 在渲染循环中绘制三角形
    glBindVertexArray(VAO);
    glDrawArrays(GL_TRIANGLES, 0, 3);

    // ... 释放资源和退出的代码 ...
}
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值