Microsoft DirectX 8.0 (Visual Basic) |
Microsoft® Visual Basic® アプリケーションでは、D3DXMatrixLookAtLH および D3DXMatrixLookAtRH ヘルパー関数を使用して、カメラ位置座標、注視点、上方向ベクトル (通常は 0,1,0) に基づいてビュー行列を作成する。
次の Visual Basic コードは、D3DXMatrixLookAtLH 関数の使用方法を示している。
' この例では、g_D3DDevice は Direct3DDevice8 オブジェクトへの ' 有効な参照であると仮定している。 Dim matView As D3DMATRIX ' 視点を z 軸方向に 5 単位後ろ、 ' 3 単位上に設定する。 D3DXMatrixLookAtLH matView, vec3(0#, 3#, -5#), _ vec3(0#, 0#, 0#), _ vec3(0#, 1#, 0#) g_D3DDevice.SetTransform D3DTS_VIEW, matView
ワールド トランスフォームの場合と同様、Direct3DDevice8::SetTransform メソッドを呼び出してビュー トランスフォームを設定し、第 1 パラメータに D3DTS_VIEW フラグを指定する。詳細については、「トランスフォームの設定」を参照すること。
パフォーマンスの最適化に関する注 Microsoft® Direct3D® では、設定されたワールド行列およびビュー行列を使用して、いくつかの内部データ構造を構築する。新しいワールド行列またはビュー行列を設定するたびに、関係する内部構造が再計算される。これらの行列をフレームごとに 20,000 回も設定するなど頻繁に設定すると、多大な計算負荷が発生する。必要な計算を最小限に抑えるには、ワールド行列として設定するワールドビュー行列にワールド行列およびビュー行列を連結した後、ビュー行列を単位行列に設定する。ワールド行列およびビュー行列の各キャッシュ コピーは保持しておくこと。必要に応じてワールド行列を修正、連結、およびリセットできる。Direct3D のサンプルでは、簡潔であることを優先して、この最適化はほとんど用いていない。