Microsoft DirectX 8.0 (C++) |
256 〜 511 の範囲のトランスフォーム ステートは、8 ビットのインデックスを使ってインデックス付けできる最大 256 個の行列を格納するために確保されている。D3DTS_WORLDMATRIX マクロを使用して、インデックス 0 〜 255 を対応するトランスフォーム ステートにマッピングする。次のコードは、IDirect3DDevice8::SetTransform メソッドを使用してトランスフォーム ステート番号 256 の行列を単位行列に設定する方法を示している。
D3DMATRIX matBlend1; D3DXMatrixIdentity( &matBlend1 ); d3dDevice->SetTransform( D3DTS_WORLDMATRIX(0), &matBlend );
インデックス付き頂点ブレンディングの有効と無効を切り替えるには、D3DRS_INDEXEDVERTEXBLENDENABLE レンダリング ステートを TRUE に設定する。このレンダリング ステートが有効になっている場合は、頂点ごとにパック DWORD で行列インデックスを渡さなければならない。このレンダリング ステートを無効にし、頂点ブレンディングを有効にすることは、すべての頂点について行列インデックス 0、1、2、3 を指定することに等しい。以下のコードは、IDirect3DDevice8::SetRenderState メソッドを使用して、インデックス付き頂点ブレンディングを有効にする。
d3dDevice->SetRenderState( D3DRS_INDEXEDVERTEXBLENDENABLE, TRUE );
頂点ブレンディングの有効と無効を切り替えるには、D3DRS_VERTEXBLEND レンダリング ステートを D3DVERTEXBLENDFLAGS 列挙型の D3DRS_DISABLE 以外の値に設定する。このレンダリング ステートが D3DRS_DISABLE に設定されていない場合は、各頂点に必要な加重値を渡さなければならない。次のコードは、SetRenderState を使用して、各頂点対して 3 つの重みで頂点ブレンディングを有効にする。
d3dDevice->SetRenderState( D3DRS_VERTEXBLEND, D3DVBF_3WEIGHTS );