1.uniform变量
uniform变量是application传递给shader的变量,在application外部赋值,在shader内部,不能被修改。如果uniform变量在vertex和fragment两者之间声明方式一样,则可以在vertex和fragment共享使用。
uniform一般用来表示:材质,参数,变换矩阵和公用颜色等信息。
例子:
uniform vec3 lightPosition;//光源位置
uniform mat4 viewMatrix;//视图矩阵
2.attribute变量
attribute变量只能在vertex shader中使用的变量,不能在fragment shader中声明attribute变量,也不能在fragment shader中使用。
一般用于表示一些顶点数据,如:发现,纹理坐标,顶点坐标,顶点颜色等等
3.varying变量
varying变量用于vertex和fragment shader之间做数据传递使用。一般vertex shader修改varying,fragment shader使用该varying值。因此varying在vertex和fragment声明需要一致