您的位置:首页 > 运维架构

为什么opengl中,gl_Position是vec4类型的?不是应该是vec3吗,多出来的那个是什么呀

2017-08-29 10:17 267 查看
https://zhidao.baidu.com/question/1817876033322344268.html

由于3d图形用到了 4x4的矩阵(4行4列),矩阵乘法要求
nxm * mxp(n行m列 乘 m行p列)才能相乘,注意m是相同的,所以 1x4 * 4x4 才能相乘。

所以是vec4而不是vec3
至于为什么 4x4你看下那些 投影矩阵的演算过程就知道了。
至于你说的多出来的那一位,
如果是点坐标的话是 1.0
position 是位置所以应该是 (x,y,z,1.0f)
如果是 方向向量 ,也就是 代表的不是点 而是一个方向 则是 0.0
也就是 (x,y,z,0.0f)
这也是 要与矩阵进行乘法所决定的。
建议你去学一些矩阵的运算,既然要用到 3d ,学矩阵是很有必要的,很多计算用到了矩阵
而且现在的cpu 也提供了 mmx来做矩阵的运算,可见矩阵对3d的作用不少。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐