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