OpenGL:GLSL中点、向量、矩阵操作

点操作

3D空间中的点可以通过x,y,z的值来表示(注意在OpenGL中的3D坐标系大都是右手坐标系,而Direct3D中的坐标系大都是左手坐标系)。不过用齐次坐标来表示点会使计算更高效。在每个点的齐次坐标有4个值,前三个值表示x、y和z,第四个值w总是非零值,通常为1.

用来存储齐次3D坐标的GLSL数据类型是vec4。这里的vec代表向量,同时也可以用来表示点。

向量操作

在3D图形学中,向量一般用空间中的某个点表示,向量的大小是原点到该点的距离,方向则是原点到该点的方向。

许多图形系统并不区分点和向量,如GLSL中提供的vec3和vec4类型技能用来存储点,又能用来存储向量。在GLSL中有许多3D图形学中经常用到的向量操作。如假设有向量A(u,v,w)和B(x,y,x),可得如下操作:

加法:vec3+vec3

减法:vec3-vec3

归一化(将长度变为1):normalize(vec3)或normalize(vec4)

点积:dot(vec3, vec3)或dot(vec4, vec4)

外积(叉积):cross(vec3, vec3)

矩阵操作:

1)GLSL中的mat4数据类型用来存储4x4矩阵;初始化mat4矩阵的语法以列为单位读入值,其前4个参数会放入第一列,接下来的4个参数放入下一列,直到第四列。

2)GLSL库中矩阵的转置函数为transpose(mat4)。

3)GLSL中"+"运算符在mat4上进行了重载,以支持矩阵的加法。

4)GLSL中支持点(vec4)与矩阵相乘,并使用*操作符表示。

5)GLSL中支持使用重载后的"*"运算符计算矩阵乘法

6)GLSL中提供了计算一个矩阵的逆矩阵操作函数mat4.inverse()

......

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张帅峰_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值