一、基础类型
- void 空类型
- bool 布尔类型 true,false
- int 带符号的整数 signed integer
- float 带符号的浮点数 floating scalar
- vec2, vec3, vec4 n维浮点数向量
- bvec2, bvec3, bvec4 n维布尔向量
- ivec2, ivec3, ivec4 n维整数向量
- mat2, mat3, mat4 2x2, 3x3, 4x4 浮点数矩阵
- sampler1D 用于内建的纹理函数中引用指定的1D纹理的句柄。只可以作为一致变量或者函数参数使用
- sampler2D 2D纹理句柄
- sampler3D 三维纹理句柄
- samplerCube cube map纹理句柄
- sampler1DShadow 一维深度纹理句柄
- sampler2DShadow 二维深度纹理句柄
二、数组和结构体
- float foo[3] glsl只支持1维数组
- struct type-name{} 类似c语言中的 结构体
//一般类型
float pSize = 10.0;
float pSize1;
pSize1=10.0;
...
//复合类型
vec4 color = vec4(0.0, 1.0, 0.0, 1.0);
vec4 color1;
color1 =vec4(0.0, 1.0, 0.0, 1.0);
...
//结构
struct light {
float intensity;
vec3 position;
};
light lightVar = light(3.0, vec3(1.0, 2.0, 3.0));
//数组
const float c[3] = float[3](5.0, 7.2, 1.1);
三、运算符
- () a*(b+c)
- [] () . ++ – 数组下标[],方法参数fun(arg1,arg2,arg3),属性访问a.b,自增/减后缀a++ a–
- ++ – + - ! 自增/减前缀++a –a,正负号(一般正号不写)a ,-a,取反!false
- * / 乘除数学运算
- + - 加减数学运算
- < > <= >= 关系运算符
- == != 相等性运算符
- && 逻辑与
- ^^ 逻辑排他或(用处基本等于!=)
- || 逻辑或
- ? : 三目运算符
- = += -= *= /= 赋值与复合赋值
- , 顺序分配运算
四、变量限定符
- none (默认的可省略)本地变量,可读可写,函数的输入参数既是这种类型
- varying 主要负责在vertex 和 fragment 之间传递变量
- const 常量值必须在声明时初始化。它是只读的不可修改的。
- attribute 只能存在于vertex shader中,一般用于保存顶点或法线数据,它可以在数据缓冲区中读取数据。表示只读的顶点数据,只用在顶点着色器中。数据来自当前的顶点状态或者顶点数组。它必须是全局范围声明的,不能在函数内部。一个attribute可以是浮点数类型的标量,向量,或者矩阵。不可以是数组或者结构体
- uniform 一致变量。在着色器执行期间一致变量的值是不变的。与const常量不同的是,这个值在编译时期是未知的是由着色器外部初始化的。一致变量在顶点着色器和片段着色器之间是共享的。它也只能在全局范围进行声明。
- varying 顶点着色器的输出。例如颜色或者纹理坐标,(插值后的数据)作为片段着色器的只读输入数据。必须是全局范围声明的全局变量。可以是浮点数