结构体
GLSL ES 中可以使用 struct
关键字定义结构体,将已存在的数据类型聚合到一起,如下:
//定义结构体类型light
struct light {
vec4 color;
vec3 position;
};
light l1, l2;
上面定义了结构体类型 light ,包含color和position两个成员变量。为了书写方便,可以在同一条语句中定义结构体并声明该类型的变量,如下:
//定义结构体类型light
struct light {
vec4 color;
vec3 position;
} l1;
赋值和构造
结构体有标准的构造函数,名称与结构体名一致,其次构造函数的参数顺序必须与定义的成员变量顺序一致。
// -------colo------- -----position-----
l1 = light(vec4(0.0, 1.0, 0.0, 1), vec3(8.0, 2.0, 0.0));
访问成员
在结构体变量后面跟点运算符(.),然后再加上成员名就可以访问变量成员,如下:
vec4 color = l1.color;
vec3 position = l1.position;
运算符
结构体成员可以参与其自身类型支持的任何运算,但结构体本身只支持两种运算:
赋值(=)
比较(== 和 !=)
当且仅当两个结构体变量所对应的成员都相等时,== 运算符返回true,如果任意某个成员不相等,那么 != 运算符返回true。
还需要注意的是,赋值和比较运算不适用于含有 数组
与 纹理成员
的结构体。