準備するもの
FLOAT fScaleX = 2.0f, fScaleY = 3.0f, fScaleZ = 0.5f; //拡大縮小用変数
■使い方
D3DXMATRIXA16 matWorld; //ワールド行列 D3DXMATRIXA16 matScale; //拡大縮小行列 D3DXMatrixIdentity(&matWorld); //初期化 //拡大縮小行列の作成 D3DXMatrixScaling(&matScale, fScaleX, fScaleY, fScaleZ); D3DXMatrixMultiply(&matWorld, &matWorld, &matScale); m_pDevice->SetTransform(D3DTS_WORLD, &matWorld);
D3DXMatrixScaling関数にそれぞれX、Y、Zの拡大縮小率を与えます。
この率は1.0fを基準としているので、値を1より大きくすると拡大し、1より小さくすると縮小します。
移動行列、回転行列と共に反映させるには
D3DXMatrixMultiply(&matWorld, &matWorld, &matRotation); D3DXMatrixMultiply(&matWorld, &matWorld, &matScale); D3DXMatrixMultiply(&matWorld, &matWorld, &matPosition); m_pDevice->SetTransform(D3DTS_WORLD, &matWorld);
という風になります。順番を変えると違った結果が返ってきます。