unity3d的矩阵一直用,但是之前都是测试着用的,效果虽然正确,但是一直没搞清楚它是行矩阵还是列矩阵
今天测试了下
Matrix4x4 mat4 = Matrix4x4.Perspective(30,1.0f,3,30); Vector4 row1 = mat4.GetRow(0); Vector4 row2 = mat4.GetRow(1); Vector4 row3 = mat4.GetRow(2); Vector4 row4 = mat4.GetRow(3); Debug.Log("mat4:Row3"+ row3 +"mat4:Row4:"+ row4);
打印出来的数据是这样的:
mat4:Row3(0.0, 0.0, -1.2, -6.7)mat4:Row4:(0.0, 0.0, -1.0, 0.0)
Perspective的矩阵如果是行为主序的,那么这个是不对的
参考opengl官网
mat[2] = 0.0; mat[6] = 0.0; mat[10] = -(zfar + znear) / (zfar - znear); mat[14] = -(2.0f * zfar * znear) / (zfar - znear); mat[3] = 0.0; mat[7] = 0.0; mat[11] = -1.0; mat[15] = 0.0;
所以他的是列矩阵,就是和opengl一样的