所以我正在学习OpenGL作为主要资源的"红皮书".我正在阅读矩阵代数,旋转/缩放/变换矩阵,一切都很好,但我只是没有一个简单的事情.假设函数glLoadIdentity().它设置默认矩阵4x4.因此它设置3个顶点和1个点:(1,0,0)(0,1,0)(0,0,1)个顶点,(0,0,0)个点.但我的问题是,这些对应的是什么?一般来说,OpenGL中矩阵对应的是什么?我知道这些是轴心的方向.但是什么呢?相机?
OpenGL矩阵仅对应于在一个坐标空间中定义到另一个坐标空间的变换,移动对象,向量和点.如果在一个坐标空间中有一个矩阵M(m11 - m44,如下所示)和一个向量V(v1 - v4),那么乘以M将转换你的V向量(可以描述运动向量,对象位置或对象顶点) )到不同坐标空间的W(w1-w4):
| m11 m12 m13 m14 | | v1 | | w1 |
| m21 m22 m23 m24 | | v2 | | w2 |
| m31 m32 m33 m34 | X | v3 | = | w3 |
| m41 m42 m43 m44 | | v4 | | w4 |
Run Code Online (Sandbox Code Playgroud)
哪里:
w1 = m11 * v1 + m12 * v2 + m13 * v3 + m14 * v4
w2 = m21 * v1 + m22 * v2 + m23 * v3 + m24 * v4
w3 = m31 * v1 + m32 * v2 + m33 * v3 + m34 * v4
w4 = m41 * v1 + m42 * v2 + m43 * v3 + m44 * v4
Run Code Online (Sandbox Code Playgroud)
因此,如果我们将v1 - v3视为旧的x,y和z坐标并将v4设置为1,那么我们可以将w1 - w3视为新的x,y和z坐标,我们可以看到一些事情:
m11是从旧的x坐标到新的坐标的乘数,因此它用于比例变换(类似地,对于m22和m33)
m14乘以1并添加到新的x坐标,因此它用于翻译(类似地,对于m24和m34) )
旋转有点难以概念化,但它们是通过将其他矩阵值设置为适当的值来完成的.你可以在这里阅读更多内容:http://gpwiki.org/index.php/Matrix_math