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