Microsoft DirectX 8.0 (C++)

ブレンディング行列の設定

IDirect3DDevice8::SetTransform メソッドを呼び出して、システムがブレンドする際のトランスフォーム行列を設定する。第 1 パラメータに D3DTS_WORLDMATRIX マクロで定義される値を設定し、第 2 パラメータには設定する行列のアドレスを設定する。

次の C++ コード例は、2 つのワールド行列を設定する。これらの行列間でジオメトリをブレンドしてジョイントされた腕のイリュージョンを作成する。

// この例では、変数 d3dDevice は
// 初期化済みの IDirect3DDevice8 インターフェイスへの
// 有効なポインタであると仮定している。
float     BendAngle = 3.1415926f / 4.0f; // 45°
D3DMATRIX matUpperArm, matLowerArm;

// 上腕は動かない。単位行列を使用する。
D3DXMatrixIdentity( matUpperArm );
d3dDevice->SetTransform( D3DTS_WORLDMATRIX(0), &matUpperArm );

// 下腕は x 軸を中心に回転する。これは上腕につなげる。
D3DXMatrixRotationX( matLowerArm, -BendAngle ); 
d3dDevice->SetTransform( D3DTS_WORLDMATRIX(1), &matLowerArm );

ブレンディング行列を設定しても、システムはその行列を後で使用できるように単にキャッシュするだけで、頂点のブレンドを開始するわけではない。詳細については、「ジオメトリ ブレンディングを有効にする」を参照すること。