我往一個立方體表面貼了一個火焰紋理,想讓火焰繞中心旋轉,但是作出來的效果是火焰繞左上角旋轉。
其中的關鍵代碼如下:
/* 根據游戲時長變換紋理坐標 */
static float time = 0;
float t = mTimer.getDeltaTime();//每幀時長
D3DXMATRIX texMtx,TranMtx, RotateMtx;
D3DXMatrixTranslation(&TranMtx, 0.5f, 0.5f, 0.0f);//創建平移矩陣
D3DXMatrixRotationZ(&RotateMtx, time += t); //創建旋轉矩陣
texMtx = TranMtx * RotateMtx; //得到最終變換矩陣
mfxTexMtxVar->SetMatrix((float*)&texMtx); //應用到效果文件中的矩陣變量
請問應該如何實現?
附:我還發現創建平移矩陣時,修改相應的偏移量居然對最終的效果毫無作用!奇了怪了!
你設置的中心點不對,首先d3d默認的旋轉坐標點是左上定點,要想老中心點旋轉就得重新設置旋轉點,可以去找下具體設置的函數