ゲームプログラムのメモ書き

DirectX

拡大縮小でGO

準備するもの

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);

という風になります。順番を変えると違った結果が返ってきます。