1、首先介绍一下GLSL的数据类型,如果你学过c++,那么一定不会陌生。
float double int uint bool型几个数据类型;基本上从字面上就能理解这几个数据类型的含义。
2、变量的使用与c++也是一样,先声明,再定义使用。包括全局变量与局部变量均与c++相同。
3、变量可在声明时直接初始化。例如:
int i,o = 5;
如果是float 类型可在后面加上f或F,如果是double类型可在后面加上LF。
4、GLSL几乎不允许类型隐式转换,例如:
int i = false;
这种写法是错的.
5、可以隐式转换的类型包括转换之后的类型有:
目的类型 源类型
uint int
float int,uint
double int,uint,float
6、对于需要类型转换的类型可用强制类型转换。
float i = 10.0;
int g = int(i);
7、在矩阵类型中mat4*3表示4列3行的矩阵,GLSL中列优先。
(
1,2,3,4,5,6,7,8,9,
);
表示1 4 7
2 5 8
3 6 9.
8、调用向量或数组中的一个元素时,可使用[]或.的形式,例如:
float i = color.r;
int t = v.y;
float i = color[0];
int t = v[1];
上述两种表述方式都可以。
9、GLSL中的几种表述方式:
position (x,y,z,w);
color (r,g,b,a);
texture coordinates(s,t,p,q);
10、GLSL还提供一种特殊的赋值方式:
vec3 = color.rrr;
vec4 t = color.abgr;
vec4 q = m[4];
这两种方式都可以,并且说明了GLSL的表述方式;其中最后一句表示m的第四列赋值给q。
11、array,matrices和vectors都拥有一个共同的方法,length();