GLSL ES 语言—矢量点(.)运算符

使用 . 或 [ ] 运算符访问矢量和矩阵中的元素

. 运算符

在矢量变量名后接点运算符(.),然后使用分量名,访问矢量的元素,矢量的分量名如下表:

分量名描述
x, y, z, w获取顶点坐标分量
r, g, b, a获取颜色分量
s, t, p, q获取纹理坐标分量

矢量可以用来存储顶点坐标、颜色和纹理坐标,所以 GLSL ES 支持以上三种分量名称以增强程序可读性。任何矢量的 x, r, s 都会返回第 1 个分量,y, g, t 分量都会返回第 2 个分量,比如:

vec3 v3 = vec3(1.0, 2.0, 3.0); 
	
float t;	
f = v3.x; // 设置f为1.0	
f = v3.y; // 设置f为2.0	
f = v3.z; // 设置f为3.0	
f = v3.r; // 设置f为1.0	
f = v3.s; // 设置f为1.0

试图访问超过矢量长度的分量会出错:

f = v3.w; 

将多个分量名共同置于点运算符之后,可以从矢量中同时抽取多个分量,这个过程称之为混合,比如:

vec2 v2;	
v2 = v3.xy; // 设v2为(1.0, 2.0)	
v2 = v3.yz; // 设v2为(2.0, 3.0) 可以省略任意分量	
v2 = v3.xz; // 设v2为(1.0, 3.0) 可以跳过任意分量	
v2 = v3.yx; // 设v2为(2.0, 1.0) 可以逆序	
v2 = v3.xx; // 设v2为(1.0, 1.0) 可以重复任意分量	
vec3 v3a;	
v3a = v3.zyx; // 设v3a为(3.0, 2.0, 1.0) 可使用所有分量

聚合分量名也可以用来作为赋值表达式(=)的左值:

vec4 position = vec4(1.0, 2.0, 3.0, 4.0);	
//position为(5.0, 2.0, 3.0, 6.0)	
position.xw = vec2(5.0, 6.0); 

注意,使用多个分量名必须属于同一集合,比如不能使用v3.was。


640?wx_fmt=jpeg

  1. GLSL ES 语言基础

  2. GLSL ES 语言—矢量和矩阵的赋值构造函数

  3. GLSL ES 语言—变量数值类型

  4. CreatorPrimer 30篇教程汇总

  5. 贝塞尔曲线动作小工具

  6. CreatorPrimer|飞机大战(三)

  7. CreatorPrimer|飞机大战(二)

  8. CreatorPrimer|组件编码心得(上)

  9. CreatorPrimer|组件编码心得(中)

  10. CreatorPrimer|组件编码心得(下)

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值