Share via


ビューポート クリッピング ボリュームの設定

ビューポート クリッピング ボリュームの設定

レンダリング デバイスに対してビューポート パラメータを設定するための条件は、ビューポートのクリッピング ボリュームを設定することだけである。このためには、クリッピング ボリュームとレンダリング ターゲット サーフェイス用のクリッピング値を初期化および設定する。ビューポートは、一般には、レンダリング ターゲット サーフェイスの全領域にレンダリングするように設定されるが、必ずしもそうする必要はない。

C++ でこれを実現するには、D3DVIEWPORT9 構造体のメンバを次のように設定する。

D3DVIEWPORT9 viewData = { 0, 0, width, height, 0.0f, 1.0f };

D3DVIEWPORT9 構造体に値を設定した後、IDirect3DDevice9::SetViewport メソッドを呼び出してデバイスにビューポート パラメータを適用する。次のコードは、この呼び出しを示している。

HRESULT hr;

hr = pd3dDevice->SetViewport(&viewData);
if(FAILED(hr))
return hr;

この呼び出しが成功すると、ビューポート パラメータが設定され、次回レンダリング メソッドを呼び出したときにこのビューポート パラメータが有効になる。ビューポート パラメータは、D3DVIEWPORT9 構造体の値を更新して、再度 IDirect3DDevice9::SetViewport を呼び出すだけで変更できる。

  D3DVIEWPORT9 構造体の MinZ および MaxZ メンバは、シーンがレンダリングされる深度範囲を示し、クリッピングには使われない。ほとんどのアプリケーションでは、このメンバを 0.0 と 1.0 に設定して、深度バッファ内の深度値の全範囲にレンダリングしている。場合によっては、別の深度範囲を使って特殊効果を得ることもできる。たとえば、ゲームのヘッドアップ ディスプレイをレンダリングする場合、両方の値を 0.0 に設定してフォアグラウンドのシーン内のオブジェクトを強制的にレンダリングしたり、両方の値を 1.0 に設定して常にバックグラウンドに存在する必要があるオブジェクトをレンダリングできる。