Microsoft DirectX 8.0 (Visual Basic)

射影行列の設定

Microsoft® Visual Basic® で記述されたアプリケーションでは、射影行列を作成できる。これについては、「射影トランスフォームとは」で説明する。ただし、Direct3DX ユーティリティ ライブラリには、射影行列を設定するための次の関数が用意されている。

次の Visual Basic コードは、D3DXMatrixPerspectiveLH の一般的な使用方法を示している。

    ' この例では、g_D3DDevice は Direct3DDevice8 オブジェクトへの
    ' 有効な参照であると仮定している。 

    ' 射影行列では、パースペクティブ トランスフォームを設定する。
    ' これは、ジオメトリを 3D ビュー空間から 2D ビューポート空間にトランスフォームし、
    ' パースペクティブ分割を行うことで、
    ' 遠方のオブジェクトを小さくする。パースペクティブ トランスフォームを作成するには、
    ' 視野 (通常は 1/4 π)、アスペクト比、
    ' および近くと遠方のクリップ面
    ' (ジオメトリがレンダリングされなくなる距離を定義する) が必要である。

    Dim matProj As D3DMATRIX

    D3DXMatrixPerspectiveFovLH matProj, g_pi / 4, 1, 1, 1000
    g_D3DDevice.SetTransform D3DTS_PROJECTION, matProj

行列を作成した後は、Direct3DDevice8.SetTransform メソッドを呼び出してその行列を設定し、第 1 パラメータに D3DTRANSFORMSTATE_PROJECTION を指定する必要がある。詳細については、「トランスフォームの設定」を参照すること。