前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GLSL ES 语言—矢量和矩阵的赋值构造函数

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

作者头像
张晓衡
发布2019-09-11 18:10:05
1.2K0
发布2019-09-11 18:10:05
举报

矢量构造函数

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

代码语言:javascript
复制
//将v3设为(1.0, 0.0, 0.5)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);

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

代码语言:javascript
复制
//将v4设为(1.0, 0.0, 1.0, 1.0)vec4 v4b = vec4(v2, v4);

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

矩阵构造函数

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

  • 使用矩阵构造函数mat4()传入每一个元素的数值
代码语言:javascript
复制
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);

对应的矩阵:

  • 向矩阵传入一个或多个矢量,注意它是列主序排列
代码语言:javascript
复制
vec2 v2_1 = vec2(1.0, 3.0); 
vec2 v2_2 = vec2(2.0, 4.0);
mat2 m2_1 = mat2(v2_1, v2_2);

对应的矩阵:

  • 向矩阵构造函数中传入矢量和数值,同样按照注列主序传入
代码语言:javascript
复制
// 使用两个浮点数和一个vec2
mat2 = mat2(1.0, 3.0, v2_2);
  • 向矩阵构造函数中传入单个数值,对角线上元素都是该数值,其它元素为0.0
代码语言:javascript
复制
mat4 m4 = mat4(1.0);

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

代码语言:javascript
复制
mat4 m4 = mat4(1.0, 2.0, 3.0); // 错误,mat4需要16个元素
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-19,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 矢量构造函数
  • 矩阵构造函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档