产生一个单位矩阵:D3DXMATRIX *D3DXMatrixIdentity( D3DXMATRIX *pout);//返回结果 求转置矩阵:D3DXMATRIX *D3DXMatrixTranspose( D3DXMATRIX *pOut,//返回的结果 CONST D3DXMATRIX *pM );//目标矩阵 求逆矩阵:D3DXMATRIX *D3DXMatrixInverse( D3DXMATRIX *pOut,//返回的结果 FLOAT *pDeterminant,//设为0 CONST D3DXMATRIX *pM );//目标矩阵 至于什么是单位矩阵,什么是转置矩阵,什么是逆矩阵我就不说了,可以看一下线性代数的书,一看就明白了。简单的加减乘除法可以使用D3DXMATRIX结构体里面重载的运算符。两个矩阵相乘也可以用函数来实现,这将在接下来的矩阵变换中讲到。 ·矩阵变换 矩阵的基本变换有三种:平移,旋转和缩放。 平移: D3DXMATRIX *D3DXMatrixTranslation( D3DXMATRIX* pOut,//返回的结果 FLOAT x, //X轴上的平移量 FLOAT y, //Y轴上的平移量 FLOAT z) //Z轴上的平移量 ; 绕X轴旋转: D3DXMATRIX *D3DXMatrixRotationX( D3DXMATRIX* pOut, //返回的结果 FLOAT Angle //旋转的弧度 ); 绕Y轴旋转: D3DXMATRIX *D3DXMatrixRotationY( D3DXMATRIX* pOut, //返回的结果 FLOAT Angle //旋转的弧度 ); 绕Z轴旋转: D3DXMATRIX *D3DXMatrixRotationZ( D3DXMATRIX* pOut, //返回的结果 FLOAT Angle //旋转的弧度 ); 绕指定轴旋转: D3DXMATRIX *D3DXMatrixRotationAxis( D3DXMATRIX *pOut,//返回的结果 CONST D3DXVECTOR3 *pV,//指定轴的向量 FLOAT Angle//旋转的弧度 ); 缩放: D3DXMATRIX *D3DXMatrixScaling( D3DXMATRIX* pOut, //返回的结果 FLOAT sx, //X轴上缩放的量 FLOAT sy, //Y轴上缩放的量 FLOAT sz //Z轴上缩放的量 ); 利用IDirect3DDevice9接口的SetRenderState函数可修改或重新设置Direct3D设备的背面剔除的渲染状态,当然该函数的功能是十分丰富的,不局限于设置背面剔除状态, |
|
来自: haodafeng_org > 《D3D》