Microsoft DirectX 8.0 (Visual Basic) |
射影トランスフォーム行列は、3D ビュー空間から 2D ビューポート空間にジオメトリをトランスフォームする方法を定義する。
次のコードでは、射影トランスフォーム行列を作成した後、Microsoft® Direct3D® デバイスにトランスフォームを適用している。
Dim matProj As D3DMATRIX D3DXMatrixPerspectiveFovLH matProj, g_pi / 4, 1, 1, 1000 g_D3DDevice.SetTransform D3DTS_PROJECTION, matProj
最初のステップは、D3DXMatrixPerspectiveFovLH を呼び出して射影行列を設定することである。最初のパラメータは、返される行列を格納する D3DMATRIX 型である。2 番目のパラメータは視野を定義する。これによって、遠くにあるオブジェクトがどのように小さくなるかを指示する。標準的な視野は 1/4 pi であり、このサンプルでもこの値が使用されている。3 番目のパラメータはアスペクト比を定義する。サンプルで使用する標準のアスペクト比は 1 である。4 番目と 5 番目のパラメータは、近くのクリップ面と遠くのクリップ面を定義する。これは、ジオメトリがレンダリングされなくなる距離を決定する。Matrices サンプル プロジェクトでは、近くのクリップ面は 1 に、遠くのクリップ面は 100 に設定されている。
次のステップでは、Direct3DDevice8.SetTransform を呼び出して、現在の射影トランスフォームを Direct3D デバイスに設定する。SetTransform で使用する最初のパラメータは、設定するトランスフォームを指定する。このサンプルでは、D3DTS_PROJECTION フラグを使用して、射影トランスフォームを指定する。2 番目のパラメータは、現在のトランスフォームとして設定する行列へのポインタである。
射影トランスフォームの詳細については、「射影トランスフォーム」を参照すること。
このチュートリアルでは、行列の使い方を示した。「チュートリアル 4 : ライトの作成および使い方」では、シーンにライトを追加して、一層リアルにする方法を示す。