您的位置:首页 > 编程语言

05 WebGL 着色器编程语言GLSL ES的结构体

2017-05-31 09:43 183 查看
GLSL ES支持用户自定义的类型,即结构体(structures)。使用关键字struct,将已存在的类型聚合到一起,就可以定义为结构体。比如:

struct light {//定义了结构体类型light
vec4 color;
vec3 position;
}
light l1,l2;//声明了light类型的变量l1和l2 上面这段代码定义了一种新的结构体类型light,它包含两个成员:color变量和position变量。在定义结构体之后,我们又声明了两个light类型的变量l1和l2。和C语言不同的是,没有必要使用typedef关键字来定义结构体,因为结构体的名称会自动成为类型名。
此外,为了方便,可以在同一条语句中定义结构体并声明该结构体类型的变量,如下所示:

struct light {//定义结构体和定义变量同时进行
vec4 color;//光的颜色
vec3 position;//广元位置
} l1;//该结构体类型的变量l1

赋值和构造
结构体有标准的构造函数,其名称与结构体名一致。构造函数的参数的顺序必须与结构体定义中的成员顺序一致。下图显示了结构体构造函数的使用方法。



访问成员

在结构体变量名后跟点运算符(.),然后再加上成员名,就可以访问变量的成员。比如:

vec4 color = l1.color;
vec3 position = l1.position;

运算符
结构体的成员可以参与其自身类型支持的任何运算,但是结构体本身只支持两种运算:赋值(=)和比较(==和!=),如6.9所示。



当且仅当两个结构体变量所对应的所有成员都相等是,==运算符才会返回true,如果任意某个成员不相等,那么!=运算符返回true。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: