opengl学习6

理解glVertexAttribPointer()函数 



OpenGL glVertexAttribPointer()函数解析-CSDN博客

难理解的是最后一个参数。

这个参数指明了,顶点属性的数据从哪里获取

# 如果是(void*) 0,则表示数据从已绑定的VBO中获取,从第1个元素(0号)开始

# 如果是(void*) myarray+3 ,则表示数据从C++数组myarray中获取,从第4个元素(3号)开始

此外,如果选择数据源为C++数组,那么绘制时,就要记得解绑VBO,否则会发生冲突

 关于纹理

在一个着色器中有多个“纹理单元”,其中,0号纹理单元默认激活

得到一个完整的纹理缓冲区的步骤为:

1.创建纹理缓冲

2.绑定纹理缓冲

3.载入图片的字节流

4.解绑纹理缓冲

加载纹理缓冲区的步骤为:

1.激活n号纹理单元

2.绑定纹理缓冲(会绑到n号纹理单元上)

ps:0号纹理单元是默认激活的,所以直接绑定纹理缓冲时,会绑到0号单元上。

在片段着色器中使用纹理

定义sampler2D 类型的uniform变量:uniform sampler2D ourTexture2;

指定该sampler2D与哪一个纹理单元对应: glUniform1i( 变量ourTexture2的位置,  纹理单元编号)

获取纹理颜色:color = texture(ourTexture2, UV坐标)

对各种解绑,绑定行为的理解

那么VAO存在的意义是什么?

虽然解绑后“顶点缓冲区”内容不会改变,但是缓冲区的"排列方式"没有记录下来(glVertexAttribPointer)

而VAO = 顶点缓冲区+排列方式

VAO本身也算是一个缓冲区~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值