前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GLSL ES 语言—结构体

GLSL ES 语言—结构体

作者头像
张晓衡
发布2019-09-11 18:24:12
9240
发布2019-09-11 18:24:12
举报

结构体

GLSL ES 中可以使用 struct关键字定义结构体,将已存在的数据类型聚合到一起,如下:

代码语言:javascript
复制
//定义结构体类型light
struct light {
    vec4 color;
    vec3 position; 
};
light l1, l2;

上面定义了结构体类型 light ,包含color和position两个成员变量。为了书写方便,可以在同一条语句中定义结构体并声明该类型的变量,如下:

代码语言:javascript
复制
//定义结构体类型light
struct light {
    vec4 color;
    vec3 position; 
} l1;

赋值和构造

结构体有标准的构造函数,名称与结构体名一致,其次构造函数的参数顺序必须与定义的成员变量顺序一致。

代码语言:javascript
复制
//          -------colo-------      -----position-----
l1 = light(vec4(0.0, 1.0, 0.0, 1), vec3(8.0, 2.0, 0.0));

访问成员

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

代码语言:javascript
复制
vec4 color = l1.color;
vec3 position = l1.position;

运算符

结构体成员可以参与其自身类型支持的任何运算,但结构体本身只支持两种运算:

  • 赋值(=)
  • 比较(== 和 !=)

当且仅当两个结构体变量所对应的成员都相等时,== 运算符返回true,如果任意某个成员不相等,那么 != 运算符返回true。

还需要注意的是,赋值和比较运算不适用于含有 数组纹理成员的结构体。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Creator星球游戏开发社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 结构体
  • 赋值和构造
  • 访问成员
  • 运算符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档