Microsoft DirectX 8.0 (C++) |
アプリケーションは、ステンシル バッファを使用して、レンダリング ターゲット サーフェスにピクセルを書き込むかどうかを決める。
詳細については、「ステンシル バッファ」を参照すること。
C++ で記述されたアプリケーションで、ステンシル処理を有効または無効にするには、IDirect3DDevice8::SetRenderState メソッドを呼び出す。第 1 パラメータの値として D3DRS_STENCILENABLE を渡す。ステンシル処理を有効にするには第 2 パラメータの値を TRUE に設定し、無効にするには FALSE に設定する。
Microsoft® Direct3D® のステンシル テストで使用する比較関数は、SetRenderState を呼び出して設定する。第 1 パラメータの値を D3DRS_STENCILFUNC に設定する。第 2 パラメータの値として D3DCMPFUNC 列挙型のメンバを渡す。
ステンシル参照値とは、ステンシル関数がテストに使用する、ステンシル バッファ内の値である。デフォルトではステンシル参照値はゼロである。アプリケーションでは、SetRenderState を呼び出してこの値を設定できる。第 1 パラメータの値として D3DRS_STENCILREF を渡す。第 2 パラメータの値を新しい参照値に設定する。
Direct3D モジュールは、ピクセルに対するステンシル テストを実行する前に、ステンシル参照値とステンシル マスク値のビット積を計算する。その結果は、ステンシル比較関数によってステンシル バッファの内容と比較される。アプリケーションでは、SetRenderState を呼び出してステンシル マスクを設定できる。第 1 パラメータの値として D3DRS_STENCILMASK を渡す。第 2 パラメータを新しいステンシル マスクに設定する。
ステンシル テストが失敗したときの Direct3D の処理を設定するには、SetRenderState を呼び出し、第 1 パラメータとして D3DRS_STENCILFAIL を渡す。第 2 パラメータは D3DSTENCILOP 列挙型のメンバでなければならない。
また、ステンシル テストは成功したが z バッファ テストが失敗したときの Direct3D の処理もアプリケーションで制御できる。SetRenderState を呼び出し、第 1 パラメータとして D3DRS_STENCILZFAIL を渡し、第 2 パラメータに D3DSTENCILOP 列挙型のメンバを設定する。
さらに、アプリケーションでは、ステンシル テストと z バッファ テストの両方が成功したときの Direct3D の処理も制御できる。SetRenderState を呼び出し、第 1 パラメータとして D3DRS_STENCILPASS を渡す。この場合も、第 2 パラメータは D3DSTENCILOP 列挙型のメンバでなければならない。