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

矢量构造函数

GLSL ES 提供了丰富灵活的方式来创建矢量,比如:

vec3 v3 = vec3(1.0, 0.0, 0.5);	
//使用v3的前两个元素,v2为(1.0, 0.0)
	
vec2 v2 = vec2(v3);
	
//将v4设为(1.0, 1.0, 1.0, 1.0)	
vec4 v4 = vec4(1.0);

还可以将多个矢量组合成一个矢量,比如:

vec4 v4b = vec4(v2, v4); 

这里的规则是先把第一个参数v2中的所有元素填充进来,如果还未填满,就继续用第2个参数v4中的元素填充。

矩阵构造函数

需要注意矩阵中的元素是按照列主序排列的,看下面几个例子显示使用了矩阵构造函数的不同方式。

  • 使用矩阵构造函数mat4()传入每一个元素的数值

mat4 m4 = mat4(1.0,   2.0,    3.0,    4.0,	
               5.0,   6.0,    7.0,    8.0,	
               9.0,   10.0,  11.0,    12.0,	
               13.0,  14.0,  15.0,    16.0); 

对应的矩阵: 

640?wx_fmt=png

  • 向矩阵传入一个或多个矢量,注意它是列主序排列

vec2 v2_1 = vec2(1.0, 3.0); 	
vec2 v2_2 = vec2(2.0, 4.0);	
mat2 m2_1 = mat2(v2_1, v2_2); 

对应的矩阵: 

640?wx_fmt=png

  • 向矩阵构造函数中传入矢量和数值,同样按照注列主序传入

// 使用两个浮点数和一个vec2	
mat2 = mat2(1.0, 3.0, v2_2);
  • 向矩阵构造函数中传入单个数值,对角线上元素都是该数值,其它元素为0.0

mat4 m4 = mat4(1.0);

640?wx_fmt=png

如果传入的数值元素大于1个,又没达到矩阵元素的数量就会出错,如下:

mat4 m4 = mat4(1.0, 2.0, 3.0); // 错误,mat4需要16个元素

640?wx_fmt=jpeg

  1. CreatorPrimer|飞机大战(一)

  2. CreatorPrimer|飞机大战(二)

  3. 麒麟子Cocos Creator v2.1.1试玩报告

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

  5. Creator2.x摄像跟随实现RPG地图

  6. Cocos实现对ETC2的支持

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

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

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

  10. 2D MMO中角色动画的优化总结

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值