|
|
我用微软提供的D3DXVec3TransformCoord函数和自己手工计算向量左乘矩阵,算出来的东西不一样,请大家看一下我的错误在哪里呢?
//VB[iCur].Pos:顶点缓冲区中待写入的当前顶点,D3DXVECTOR3型。
//VInit[iCur].Pos:当前顶点的初始位置,D3DXVECTOR3型。
//mat:转换矩阵
//目的是将 VInit[iCur].Pos 左乘 mat 矩阵后存放到 VB[iCur].Pos中
方式一、
D3DXVec3TransformCoord(&(VB[iCur].Pos),&(VInit[iCur].Pos),&mat);
方式二、
D3DXVECTOR3 P=VInit[iCur].Pos;
P.x=mat(0,0)*P.x+mat(1,0)*P.y+mat(2,0)*P.z+mat(3,0);
P.y=mat(0,1)*P.x+mat(1,1)*P.y+mat(2,1)*P.z+mat(3,1);
P.z=mat(0,2)*P.x+mat(1,2)*P.y+mat(2,2)*P.z+mat(3,2);
VB[iCur].Pos=P;
[em7] [em7] [em7] [em7] |
|