Share via


ビューポートのクリア

ビューポートのクリア

ビューポートをクリアすると、レンダリング ターゲット サーフェイス上のビューポート矩形の内容と、深度バッファ サーフェイスおよびステンシル バッファ サーフェイス (指定されている場合) の矩形の内容がリセットされる。通常は、新しいフレームをレンダリングする前にビューポートをクリアして、ゴミを表示せずに、グラフィックスなどのデータが新しいレンダリング オブジェクトを受け入れる準備を整える。

C++ では、ビューポートをクリアする、IDirect3DDevice9 インターフェイスの IDirect3DDevice9::Clear メソッドを使える。このメソッドは、クリアするサーフェイス上の領域を定義する 1 つまたは複数の矩形を受け取る。レンダリングするシーンにビューポート矩形全体の移動が含まれている場合 (たとえば、1 人称型の遠近法を使うゲーム) は、各フレームのビューポート全体をクリアすることができる。この場合は、Count パラメータを 1 に設定し、pRects パラメータをビューポート領域全体に及ぶ単一の矩形のアドレスに設定する。より便利な方法として、pRects パラメータを NULL に設定し、Count パラメータを 0 に設定して、ビューポート矩形全体のクリアを指示できる。

IDirect3DDevice9::Clear メソッドにはさまざまな使い方があり、深度バッファ内のステンシル ビットをクリアすることもできる。Flags パラメータは、レンダリング ターゲットおよび関係する深度バッファまたはステンシル バッファのクリア方法を指定する 3 つのフラグを受け取る。このパラメータに D3DCLEAR_TARGET フラグを指定すると、このメソッドは Color パラメータで指定した任意の RGBA 色 (マテリアル色ではない) を使ってビューポートをクリアする。D3DCLEAR_ZBUFFER フラグを指定すると、このメソッドは z パラメータで指定した任意の深度に従って深度バッファをクリアする。0.0 は最も近い距離を表し、1.0 は最も遠い距離を表す。D3DCLEAR_STENCIL フラグを指定すると、このメソッドはステンシル ビットを Stencil パラメータで指定した値にリセットする。指定できる値は 0 ~ 2n-1 までの整数である。ここで、n はステンシル バッファのビット深度を示す。

  Microsoft® DirectX® 5.0 では、背景マテリアルは関連付けられたテクスチャを持つことができたので、ビューポートをクリアした後、単純な色ではなくテクスチャを表示できた。この機能はほとんど使われることがなく、特に効果的でもなかった。DirectX 6.0 以降のインターフェイスは、テクスチャ ハンドルを受け取らなくなり、ビューポートをクリアした後にテクスチャを表示することはできない。したがって、アプリケーションが手動で背景を描画しなければならない。その結果、レンダリング ターゲット サーフェイスのビューポートをクリアする必要はほとんどなくなった。アプリケーションで深度バッファをクリアするだけで、レンダリング ターゲット サーフェイス上のすべてのピクセルが上書きされる。

場合によっては、レンダリング ターゲット サーフェイスと深度バッファ サーフェイスの一部にのみレンダリングすることがある。クリア メソッドは、1 回の呼び出しでサーフェイスの複数の領域をクリアすることもできる。これを行うには、Count パラメータにクリアする矩形の数を指定し、pRects パラメータに矩形の配列内の最初の要素のアドレスを指定する。