unity3d Matrix4x4列为主序

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一样的

原文地址:https://www.cnblogs.com/dragon2012/p/4062167.html