Platform SDK: DirectX |
ビューポートをクリアすると、レンダリング ターゲット サーフェス上のビューポート矩形の内容と、深度バッファ サーフェスおよびステンシル バッファ サーフェス (指定されている場合) の矩形の内容がリセットされる。通常は、新しいフレームをレンダリングする前にビューポートをクリアして、ゴミを表示せずに、グラフィックスなどのデータが新しいレンダリング オブジェクトを受け入れる準備を整える。
C++ では、ビューポートをクリアする、IDirect3DDevice7 インターフェイスの IDirect3DDevice7::Clear メソッドを使用できる。このメソッドは、クリアするサーフェス上の領域を定義する 1 つまたは複数の矩形を受け取る。レンダリングするシーンにビューポート矩形全体の移動が含まれている場合 (たとえば、プレーヤーの視点から見た遠近法を使用するゲーム)、各フレームのビューポート全体をクリアすることができる。この場合、dwCount パラメータを 1 に設定し、lpRects パラメータをビューポート領域全体に及ぶ単一の矩形のアドレスに設定する。より便利な方法として、lpRects パラメータを NULL に設定し、dwCount パラメータを 0 に設定して、ビューポート矩形全体のクリアを示すことができる。
Clear メソッドはさまざまな使用方法があり、深度バッファ内のステンシル ビットをクリアすることもできる。dwFlags パラメータは、レンダリング ターゲットおよび関係する深度バッファまたはステンシル バッファのクリア方法を指定する 3 つのフラグを受け取る。このパラメータに D3DCLEAR_TARGET フラグを指定すると、このメソッドは dwColor パラメータで指定した任意の RGBA 色 (マテリアル カラーではない) を使用してビューポートをクリアする。D3DCLEAR_ZBUFFER フラグを指定すると、このメソッドは dwZ パラメータで指定した任意の深度に従って深度バッファをクリアする。0.0 は最も近い距離を表し、1.0 は最も遠い距離を表す。D3DCLEAR_STENCIL フラグを指定すると、このメソッドはステンシル ビットを dwStencil パラメータで指定した値にリセットする。指定できる値は 0 〜 2n-1 までの整数である。ここで、n はステンシル バッファのビット深度を示す。
注 : DirectX 5.0 では、背景マテリアルは関連付けられたテクスチャを持つことができたので、ビューポートをクリアした後、単純な色ではなくテクスチャを表示できた。この機能はほとんど使用されることがなく、特に効果的でもなかった。DirectX 6.0 以降のインターフェイスは、テクスチャ ハンドルを受け取らなくなり、ビューポートをクリアした後にテクスチャを表示することはできない。したがって、アプリケーションでは手動で背景を描画しなければならない。その結果、レンダリング ターゲット サーフェスのビューポートをクリアする必要はほとんどなくなった。アプリケーションで深度バッファをクリアするだけで、レンダリング ターゲット サーフェス上のすべてのピクセルが上書きされる。
場合によっては、レンダリング ターゲット サーフェスと深度バッファ サーフェスの一部にのみレンダリングすることがある。クリアメソッドは、1 回の呼び出しでサーフェスの複数の領域をクリアすることもできる。これを行うには、dwCount パラメータにクリアする矩形の数を指定し、lpRects パラメータに矩形の配列内の最初の要素のアドレスを指定する。
Visual Basic の Direct3DDevice7 クラスには、ビューポートをクリアする Direct3DDevice7.Clear メソッドがある。このメソッドは、クリアするサーフェス上の領域を定義する 1 つまたは複数の矩形を受け取る。レンダリングするシーンにビューポート矩形全体のモーションが含まれる場合 (たとえば、プレーヤーの視点から見た遠近法を使用するゲーム)、各フレームのビューポート全体をクリアすることができる。この場合、count パラメータを 1 に設定し、recs() パラメータを D3DRECT 変数の単一要素配列に設定する (ここでは、レンダリング ターゲット サーフェスの領域全体に及ぶ矩形を最初の要素でのみ記述する)。
Clear メソッドはさまざまな使用方法があり、深度バッファ内のステンシル ビットをクリアすることもできる。flags パラメータは、レンダリング ターゲットおよび関係する深度バッファまたはステンシル バッファのクリア方法を指定する 3 つのフラグを受け取る。このパラメータに D3DCLEAR_TARGET フラグを指定すると、このメソッドは color パラメータで指定した任意の RGBA 色 (マテリアル カラーではない) を使用してビューポートをクリアする。D3DCLEAR_ZBUFFER フラグを指定すると、このメソッドは z パラメータで指定した任意の深度に従って深度バッファをクリアする。0.0 は最も近い距離を表し、1.0 は最も遠い距離を表す。D3DCLEAR_STENCIL フラグを指定すると、このメソッドはステンシル ビットを stencil パラメータで指定した値にリセットする。指定できる値は 0 〜 2n-1 までの整数である。ここで、n はステンシル バッファのビット深度を示す。
場合によっては、レンダリング ターゲット サーフェスと深度バッファ サーフェスの一部にのみレンダリングすることがある。クリアメソッドは、1 回の呼び出しでサーフェスの複数の領域をクリアすることもできる。これを行うには、count パラメータにクリアする矩形の数を指定し、recs() パラメータに矩形の配列を指定する。