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

来源:互联网 发布:java从笨鸟到菜鸟 编辑:程序博客网 时间:2024/06/05 05:39

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。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 欠赌债跑路家人怎么办 口头欠下的赌债怎么办 我赌博欠了230万怎么办 被淘宝商家骗了怎么办 东西卡在喉咙里怎么办 东西粘在喉咙里怎么办 有异物卡在喉咙怎么办 喉咙老有异物感怎么办 喉咙疼有异物感怎么办 喉咙卡了小鱼刺怎么办 嗓子卡了小鱼刺怎么办 骨头卡在喉咙里怎么办 卡刺喉咙怎么办小窍门 中百购物卡过期怎么办 得仕卡过期了怎么办 超市购物卡丢了怎么办 中石化油卡丢失怎么办 etc同车换车牌了怎么办 石油加油卡丢了怎么办 石化加油卡丢了怎么办 怎么办中石化的加油卡 中石油油卡丢失怎么办 公司加油卡丢了怎么办 yy频道被回收了怎么办 油卡里的圈存怎么办 农商银行圈存怎么办 社保卡号忘记了怎么办 陕西壳牌加油卡怎么办 联通用超了流量怎么办 联通3g上不了网怎么办 车玻璃水冻住了怎么办 车里玻璃水冻了怎么办 做现货亏了60万怎么办 宿舍太吵晚上睡不着觉怎么办 脚扎了钉子肿了怎么办 龙血树叶子下垂怎么办 龙血树叶子卷曲怎么办 3岁宝宝长期便秘怎么办 4岁小儿便秘严重怎么办 3岁宝宝便秘严重怎么办 3岁宝宝一直便秘怎么办