D3D、OpenGL顶点和矩阵的相乘和存储:

    D3D矩阵存储是行主序(row-major order)/行优先        
    OpenGL矩阵存储是列主序(column-major order)/列优先:
    
    线性代数意义的同一个矩阵,在d3d 和 ogl 中却有不同的存储顺序
        线代:a11,a12,a13,a14    |D3D :  a11,a12,a13,a14 |  OpenGL: a11,a21,a31,a41
                    a21,a22,a23,a24    |            a21,a22,a23,a24 |                   a12,a22,a32,a42
                    a31,a32,a33,a34    |            a31,a32,a33,a34 |                   a13,a23,a33,a43
                    a41,a42,a43,a44    |            a41,a42,a43,a44 |                   a14,a24,a34,a44
   
   D3D中顶点和矩阵的相乘方式为:
       x' = x(x1,x2,x3,1) * A[4*4]
       
   如果在对局部坐标系进行多种变换,我们需要用到下面的函数:
       D3DXMATRIX *WINAPI D3DXMatrixMultiply(      
                               D3DXMATRIX *pOut,
                               CONST D3DXMATRIX *pM1,
                               CONST D3DXMATRIX *pM2
                               );
      公式(Out = M1 * M2),其实在C++里,完全可以像公式那里操作,不用这个函数。
      注意:这里主要是说明,顶点先进行M1变换,然后才进行M2变换
    
     关于OpenGL更详细的内容可以参加:
        http://blog.csdn.net/ryfdizuo/article/details/2325279

你可能感兴趣的:(directX)