產(chǎn)生一個(gè)單位矩陣:D3DXMATRIX *D3DXMatrixIdentity( D3DXMATRIX *pout);//返回結(jié)果 求轉(zhuǎn)置矩陣:D3DXMATRIX *D3DXMatrixTranspose( D3DXMATRIX *pOut,//返回的結(jié)果 CONST D3DXMATRIX *pM );//目標(biāo)矩陣 求逆矩陣:D3DXMATRIX *D3DXMatrixInverse( D3DXMATRIX *pOut,//返回的結(jié)果 FLOAT *pDeterminant,//設(shè)為0 CONST D3DXMATRIX *pM );//目標(biāo)矩陣 至于什么是單位矩陣,什么是轉(zhuǎn)置矩陣,什么是逆矩陣我就不說了,可以看一下線性代數(shù)的書,一看就明白了。簡(jiǎn)單的加減乘除法可以使用D3DXMATRIX結(jié)構(gòu)體里面重載的運(yùn)算符。兩個(gè)矩陣相乘也可以用函數(shù)來實(shí)現(xiàn),這將在接下來的矩陣變換中講到。 ·矩陣變換 矩陣的基本變換有三種:平移,旋轉(zhuǎn)和縮放。 平移: D3DXMATRIX *D3DXMatrixTranslation( D3DXMATRIX* pOut,//返回的結(jié)果 FLOAT x, //X軸上的平移量 FLOAT y, //Y軸上的平移量 FLOAT z) //Z軸上的平移量 ; 繞X軸旋轉(zhuǎn): D3DXMATRIX *D3DXMatrixRotationX( D3DXMATRIX* pOut, //返回的結(jié)果 FLOAT Angle //旋轉(zhuǎn)的弧度 ); 繞Y軸旋轉(zhuǎn): D3DXMATRIX *D3DXMatrixRotationY( D3DXMATRIX* pOut, //返回的結(jié)果 FLOAT Angle //旋轉(zhuǎn)的弧度 ); 繞Z軸旋轉(zhuǎn): D3DXMATRIX *D3DXMatrixRotationZ( D3DXMATRIX* pOut, //返回的結(jié)果 FLOAT Angle //旋轉(zhuǎn)的弧度 ); 繞指定軸旋轉(zhuǎn): D3DXMATRIX *D3DXMatrixRotationAxis( D3DXMATRIX *pOut,//返回的結(jié)果 CONST D3DXVECTOR3 *pV,//指定軸的向量 FLOAT Angle//旋轉(zhuǎn)的弧度 ); 縮放: D3DXMATRIX *D3DXMatrixScaling( D3DXMATRIX* pOut, //返回的結(jié)果 FLOAT sx, //X軸上縮放的量 FLOAT sy, //Y軸上縮放的量 FLOAT sz //Z軸上縮放的量 ); 利用IDirect3DDevice9接口的SetRenderState函數(shù)可修改或重新設(shè)置Direct3D設(shè)備的背面剔除的渲染狀態(tài),當(dāng)然該函數(shù)的功能是十分豐富的,不局限于設(shè)置背面剔除狀態(tài), |
|