VAO与VBO的相关操作

在OpenGL的学习中了解到了VAO与VBO的概念

什么是VBO

VBO是OpenGL指令告诉GPU在其显存中开辟一块指定大小的内存区间,其中存储片元的顶点数据等

//制作一个vbo,存放三角形的位置与颜色信息
//顶点数据
float ver[]={
-0.5f,-0.5f,0.0f,1.0f,0.0f,0.0f,
0.5f,-0.5f,0.0f,0.0f,1.0f,0.0f,
0.0f,0.5f,0.0f,0.0f,0.0f,1.0f
};

GLuint vbo;//创建一个VBO,这时候没有实装
glGenBuffers(1,&vbo);
glBindBuffer(GL_ARRAY_BUFFER,vbo);//把这个vbo绑定到状态机上的vbo接口
//下面这一步才算实装,填入vbo数据(接口,大小,数据,数据使用方式)
glBufferData(GL_ARRAY_BUFFER,sizeof(ver),ver,GL_STATIC_DRAW);

什么是vao

vao是与vbo搭配使用的,他存放的是vbo的描述信息,比如上述的ver数组,我不说你知道他是什么吗,他有三排数据,每一排是一个顶点,前三个是float类型的坐标xyz,后面三个是颜色数据rgb,数据有的都是相对坐标,我记得是有个官方的名字叫什么系统坐标还是什么,忘了不重要,本质就是相对坐标系,xy的范围都是(-1,1),原点在屏幕中心,相对于屏幕的比例,这就是描述信息,告诉GPU怎么用这些数据,存在vao中

//创建绑定vao
GLuint vao =0;
glGenVertexArrays(1,&vao);
glBindVertexArray(vao);

//绑定vbo,接下来设置的属性与这个buffer有关
glBindBuffer(GL_ARRAY_BUFFER,vbo);
//位置属性放在vao的0号位置,要先激活
glEnableVertexArray(0);
//位置属性放在0号位置,一个属性三个位置,属性数字是float,非归一化,步长(一个点有6个数据),顶点数据内部偏移
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,6*sizeof(float),(void*)0);


//颜色数据放在vao的1号位置,要先激活
glEnableVertexArray(0);
glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,6*sizeof(float),(void*)(3*sizeof(float)));

数据内偏移量这里注意一下,指针每次都值指向点数据的头部位置,如果数据是混用在一块的要设置

最后可以加一句解除vao绑定

glBindVertexArray(0);

还只算了解,有什么不对的地方欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值