GLSL-openGL的context与object - VAO、VBO、IBO

openGL的context

在openGL渲染管线中,context保存了当前的渲染状态,在OSG等图形引擎中可能同时有多个线程进行场景渲染,此时便需要有多个图形上下文来保存各个线程的openGL状态。

openGL的object

openGL中的另一个重要概念是object,如VAO、VBO、IBO、TBO、FBO等等。这些object中要么存放的是原始数据,如顶点坐标、顶点颜色、纹理坐标、纹理图像,要么存放的是中间数据,如着色器烘培出的纹理等等。

context与object

object与context之间有非常密切的关系:
-第一:在被绑定到context之后object之中的数据才能被输入至渲染管线中
-第二:在被绑定到context之后object之间才能相互引用(context起到了全局变量的作用)

vertex array object - VAO

VAO是和渲染管线最密切的object,它定义了顶点着色器的输入格式。VAO保存的是顶点属性的存储格式和存储地址,其指向VBO中的顶点数据(坐标、颜色、纹理坐标)。

// 定义vao变量;生成一个VAO;将vao绑定至状态机(下文对VertexArray的操做均影响vao变量) 
unsigned int vao;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
// 生成一个VBO;
VertexBuffer vbo1(data, sizeof(data));
//打开VAO的第0个属性;
glEnableVertexAttribArray(0);
//定义VAO第0个属性的数据解析方式.
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), 0);
// 生成一个VBO;
VertexBuffer vbo2(color, sizeof(color));
//打开VAO的第1个属性;
glEnableVertexAttribArray(1);
//定义VAO第1个属性的数据解析方式
glVertexAttribPointer(1, 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值