为什么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的作用不少。
由于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的作用不少。
相关文章推荐
- delegate 为什么应该是 weak 类型而不是strong类型
- 为什么你应该使用OPENGL而不是DIRECTX?
- (转)类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?
- C 语言中布尔值的候选类型是什么?为什么它不是一个标准类型?
- 为什么你应该使用OpenGL而不是DirectX?
- 为什么你应该使用OpenGL而不是DirectX?
- 类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?
- 为什么你应该使用OpenGL而不是DirectX?
- 为什么你应该使用OpenGL而不是DirectX?
- 为什么你应该使用OpenGL而不是DirectX?
- 为什么你应该使用OpenGL而不是DirectX?
- C 语言中布尔值的候选类型是什么?为什么它不是一个标准类型?
- 关于为什么NSShadow的shadowColor属性是id类型而不是UIColor类型
- 数据库保存经纬度,需要采用什么数据类型,小数点应该精确多少位?
- 作为一个初学者或者进阶者,这并没有什么错。当一个有能力的程序员而不是领导者,这也没有什么错。真正的错误是,当你知道应该如何去提高时仍然选择做一名初学者。
- 为什么不应该使用“volatile”类型
- poj2299+归并排序+注意输出来的那个数据的类型。。。
- 为什么应该去上大学而不是去创业
- TRIZ发明问题解决理论——本质是分析问题中的矛盾,利用资源(时间空间物质能量功能信息等)来解决矛盾从而解决问题——抽象出来:问题是什么,为什么?
- 总市值,流通股本,总金额有什么关系?大盘指数为什么不是多有股票指数之和