Microsoft DirectX 8.0 (C++)

ステップ 2 : ビュー トランスフォーム行列の定義

ビュー トランスフォーム行列は、ビューの位置および回転を定義する。ビュー行列はシーンのカメラである。

次のサンプル コードでは、ビュー トランスフォーム行列を作成した後、Microsoft® Direct3D® デバイスに現在のビュー トランスフォームを設定している。

D3DXMATRIX matView;
D3DXMatrixLookAtLH( &matView, &D3DXVECTOR3( 0.0f, 3.0f,-5.0f ),
                              &D3DXVECTOR3( 0.0f, 0.0f, 0.0f ),
                              &D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

最初のステップは、D3DXMatrixLookAtLH を呼び出してビュー行列を定義することである。最初のパラメータは、処理の結果となる D3DXMATRIX 構造体へのポインタである。第 2、第 3、第 4 のパラメータは、視点、注視点、および "上" 方向を定義する。ここでは、視点は z 軸方向に -5 単位、上方向に 3 単位の位置に、注視点は原点に、"上" 方向は y 軸方向に定義されている。

次のステップでは、IDirect3DDevice8::SetTransform を呼び出して、ビュー トランスフォームを Direct3D デバイスに適用する。SetTransform が受け取る最初のパラメータは、設定するトランスフォームを Direct3D に指示する。このサンプルでは、D3DTS_VIEW フラグを使用して、ビュー トランスフォームを指定する。2 番目のパラメータは、現在のトランスフォームとして設定する行列へのポインタである。

ビュー トランスフォームの詳細については、「ビュー トランスフォーム」を参照すること。

シーンのワールド トランスフォームを定義した後、射影トランスフォーム行列を準備できる。ここでも、トランスフォームを定義する順序は重要ではないことに注意すること。ただし、Direct3D では、(1) ワールド、(2) ビュー、(3) 射影の順序で、シーンに行列が適用される。

射影トランスフォーム行列の定義については、「ステップ 3 : 射影トランスフォーム行列の定義」で説明する。