shader着色器变量——uniform、attribute和varying


1.uniform变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息。


  uniform变量用于为整个图元批次向保持不变的(统一(Uniform)的)着色器传递数据,统一值不能被标记为in或out,它们也不能在着色器阶段之间进行插值,(虽然可以将它们复制到插值的变量中),并且它们总是只读的。

在application中,可以读取统一值,glGetUniformLocation(reflectionShader, "mvMatrix"); mvMatrix是reflectionShader着色器程序定义的统一值。

2.attribute变量


attribute变量是只能在vertex shader中使用的变量。(它不能在fragment shader中声明attribute变量,也不能被fragment shader中使用)
 
一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等。
 
在application中,一般用函数glBindAttribLocation()来绑定每个attribute变量的位置,然后用函数glVertexAttribPointer()为每个attribute变量赋值。
 

3.varying变量


varying变量是vertex和fragment shader之间做数据传递用的。一般vertex shader修改varying变量的值,然后fragment shader使用该varying变量的值。因此varying变量在vertex和fragment shader二者之间的声明必须是一致的。application不能使用此变量。

声明:此博文是参考其他博文,但有歧义,所以更改后发布的原创帖,有问题会继续更改更新。源码部分,可看我的《OpenGL蓝宝书源码学习》博客参考学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值