OpenGL ES 中 GLSL Shader常见属性说明
目录
关键字
attribute
attribute修饰的变量是只能在vertex shader中使用
一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等
在application中,一般用函数glBindAttribLocation()来绑定每个attribute变量的位置,然后用函数glVertexAttribPointer()为每个attribute变量赋值
uniform
可在vertex和fragment中使用
uniform修饰的变量是外部application程序传递给shader的变量
通过函数glUniform**()函数赋值
在shader程序内部,uniform修饰的变量就像是C语言里面的常量,它不能被shader程序修改
如果uniform修饰的变量在vertex和fragment两者之间声明方式完全一样,则它可以在vertex和fragment共享使用(相当于一个被vertex和fragment shader共享的全局变量)
uniform修饰的变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息
varying
varying是vertex和fragment shader之间做数据传递用的
一般vertex shader修改varying修饰的变量的值,然后fragment shader使用该varying修饰的变量的值
因此varying变量在vertex和fragment shader二者之间的声明必须是一致的
application不能使用此变量
precision
用于定义数据精度
举例:precision mediump float;//使用中等精度的浮点数
lowp , mediump , heighp
浮点数精度定义时使用
举例:precision heighp float;//使用中等精度的浮点数
类型
vec4
一个具备4个分量的向量(x,y,z,w)
默认值:
x = 0;
y = 0;
z = 0;
w = 1;
mat4
一个4*4矩阵类型
属性和变量
gl_Position
vec4类型
着色器的最终顶点
gl_PonitSize
float 类型 , 表示点的大小
glPointColor
顶点的颜色
gl_FragColor
片段着色器的颜色