#uniform
输入着色器的只读值,存储数据用的,例如转换矩阵、光照参数或者颜色。基本上各种输入着色器的常量参数像顶点和片段应该是uniform。uniform声明全局变量,顶点着色器中声明的uniform,片元着色器也可以使用。另,不同平台对个数有限制,详情可以查资料。
e.g
uniform mat4 viewProjMatrix;
uniform mat4 viewMatix;
uniform vec3 lightPosition;
#attibute (属性)
仅仅在顶点着色器中被使用,做为顶点着色器的输入。典型被用来存储位置、法线、贴图坐标和颜色数据。属性是每个顶点被绘制的详细数据。个数也有限制,最小为8.
e.g
attribute vec4 a_positon;
attribute vec4_a_texCoord0;
#varying (变量)
变量被用来存储顶点着色器的输出和片元着色器的输入。他们在顶点着色器和片元着色器中必须被相同的声明(类型需匹配),数量限制最小是8
varying vec2 texCoord;
varying vec4 color;
# lowp, mediump, highp (精度控制)
精度控制能够被用在任何浮点和整型数变量。
e.g
highp vec4 position;
varying lowp vec4 color;
mediump float specularExp;
//默认精度在头部定义
precision highp float;
precision mediump int;
#invariant (不变性)
被用于任何顶点着色器的变量输出的关键字。一旦输出被宣布为invariance, 同样计算的输入相同,编译器保证的输出结果相同。
e.g
invariant gl_Position;
//可以使用#pragma指令保证全局变量保持invariant
没有搞懂的部分
Sample2D
texture2D