Microsoft DirectX 8.0 (C++) |
C++ のビューポート矩形は、D3DVIEWPORT8 構造体を使用して定義する。D3DVIEWPORT8 構造体は、IDirect3DDevice8 インターフェイスが公開する次のビューポート操作メソッドで使用される。
D3DVIEWPORT8 構造体には X、Y、Width、および Height の 4 つのメンバがある。これらを使用して、シーンがレンダリングされるレンダリング ターゲット サーフェス領域を定義する。これらの値は、次の図に示すように、転送先の矩形、つまりビューポート矩形に対応する。
D3DVIEWPORT8 構造体の X、Y、Width、および Height メンバに指定する値は、レンダリング ターゲット サーフェスの左上角からのスクリーン座標である。この構造体は、シーンがレンダリングされる深度範囲を示す 2 つの追加メンバ MinZ および MaxZ を定義する。
Microsoft® Direct3D® では、ビューポートのクリッピング ボリュームの範囲は、X 方向については -1.0 〜 1.0、Y 方向については 1.0 〜 -1.0 と想定している。この値は、過去のアプリケーションで最もよく使用された設定値である。射影トランスフォームの際、クリッピングを行う前にビューポートのアスペクト比を調整することができる。このタスクについては、「射影トランスフォーム」で説明する。
注 D3DVIEWPORT8 構造体の MinZ および MaxZ メンバは、シーンがレンダリングされる深度範囲を示し、クリッピングには使用されない。ほとんどのアプリケーションでは、このメンバを 0.0 と 1.0 に設定して、深度バッファ内の深度値の全範囲にレンダリングしている。場合によっては、別の深度範囲を使用して特殊効果を得ることもできる。たとえば、ゲームのヘッドアップ ディスプレイをレンダリングする場合、両方の値を 0.0 に設定してフォアグラウンドのシーン内のオブジェクトを強制的にレンダリングしたり、両方の値を 1.0 に設定して常にバックグラウンドに存在する必要があるオブジェクトをレンダリングできる。