Microsoft DirectX 8.0 (C++)

ステップ 3 : 射影トランスフォーム行列の定義

射影トランスフォーム行列は、3D ビュー空間から 2D ビューポート空間にジオメトリをトランスフォームする方法を定義する。

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

D3DXMATRIX matProj;
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );

最初のステップは、D3DXMatrixPerspectiveFovLH を呼び出して射影行列を設定することである。最初のパラメータは、処理の結果となる D3DXMATRIX 構造体へのポインタである。2 番目のパラメータは視野を定義する。これによって、遠くにあるオブジェクトがどのように小さくなるかを指示する。標準的な視野は 1/4 pi であり、このサンプルでもこの値が使用されている。3 番目のパラメータはアスペクト比を定義する。サンプルで使用する標準のアスペクト比は 1 である。4 番目と 5 番目のパラメータは、近くのクリップ面と遠くのクリップ面を定義する。これは、ジオメトリがレンダリングされなくなる距離を決定する。Matrices サンプル プロジェクトでは、近くのクリップ面は 1 に、遠くのクリップ面は 100 に設定されている。

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

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

このチュートリアルでは、行列の使い方を示した。「チュートリアル 4 : ライトの作成および使い方」では、シーンにライトを追加して、一層リアルにする方法を示す。