英語で読む

次の方法で共有


glStencilOp 関数

glStencilOp 関数は、ステンシル テスト アクションを設定します。

構文

void WINAPI glStencilOp(
   GLenum fail,
   GLenum zfail,
   GLenum zpass
);

パラメーター

fail

ステンシル テストが失敗したときに実行するアクション。 次の 6 つのシンボリック定数が受け入れられます。

説明
GL_KEEP
現在の値を保持します。
GL_ZERO
ステンシル バッファーの値を 0 に設定します。
GL_REPLACE
glStencilFunc で指定されたステンシル バッファー値を ref に設定します。
GL_INCR
現在のステンシル バッファー値をインクリメントします。 表現可能な符号なし値の最大値にクランプします。
GL_DECR
現在のステンシル バッファー値をデクリメントします。 0 にクランプします。
GL_INVERT
現在のステンシル バッファー値をビット単位で反転します。

zfail

ステンシル テストに合格したが、深度テストが失敗した場合のステンシル アクション。 fail と同じシンボリック定数を受け入 れます。

zpass

ステンシル テストと深度テストの両方に合格した場合、またはステンシル テストに合格し、深度バッファーがない場合、または深度テストが有効になっていない場合のステンシル アクション。 fail と同じシンボリック定数を受け入 れます

戻り値

この関数は値を返しません。

エラー コード

glGetError 関数では、次のエラー コードを取得できます。

名前 意味
GL_INVALID_ENUM
failzfail、または zpass は、6 つの定義された定数値以外の値でした。
GL_INVALID_OPERATION
glBegin の呼び出しと glEnd の対応する呼び出しの間に関数が呼び出されました。

解説

ステンシルは、z バッファリングと同様に、ピクセル単位で描画を有効または無効にします。 OpenGL 描画プリミティブを使用してステンシル平面に描画し、ステンシル平面を使用してジオメトリとイメージをレンダリングして、画面の一部をマスクします。 ステンシルは、通常、デカール、アウトライン、建設的なソリッド ジオメトリ レンダリングなどの特殊効果を実現するために、マルチパス レンダリング アルゴリズムで使用されます。

ステンシル テストでは、ステンシル バッファー内の値と参照値の比較の結果に基づいて、条件付きでピクセルが削除されます。 このテストは、引数GL_STENCIL_TESTを使用した glEnable 呼び出しと glDisable 呼び出しで有効になり、 glStencilFunc で制御されます。

glStencilOp 関数は、ステンシルの有効化中に格納されているステンシル値に対する処理を示す 3 つの引数を受け取ります。 ステンシル テストが失敗した場合、ピクセルの色または深度バッファーに変更は加えられません。 また、失敗 はステンシル バッファーの内容に対して何が起こるかを指定します。

ステンシル バッファー値は符号なし整数として扱われます。 インクリメントしてデクリメントすると、値は 0 と 2n 1 に固定されます。 n は、GL_STENCIL_BITSクエリによって返される値です。

glStencilOp に対する他の 2 つの引数は、後続の深度バッファー テストが成功 (zpass) または失敗 (zfail) する必要があるステンシル バッファー アクションを指定します。 ( glDepthFunc を参照)。これらは、失敗と同じ 6 つのシンボリック定数を使用して指定 されます。 深度バッファーがない場合、または深度バッファーが有効になっていない場合、 zfail は無視されることに注意してください。 このような場合は、 failzpass でステンシル テストが失敗し、合格したときにステンシル アクションをそれぞれ指定します。

最初はステンシル テストが無効になっています。 ステンシル バッファーがない場合、ステンシルの変更は行われず、 glStencilOp の呼び出しに関係なく、ステンシル テストが常に成功するかのように見えます。

次の関数は 、glStencilOp に関連する情報を取得します。

引数GL_STENCIL_FAILを含む glGet

引数GL_STENCIL_PASS_DEPTH_PASSを含む glGet

引数GL_STENCIL_PASS_DEPTH_FAILを含む glGet

引数GL_STENCIL_BITSを含む glGet

glIsEnabled と引数 GL_STENCIL_TEST

必要条件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Gl.h
ライブラリ
Opengl32.lib
[DLL]
Opengl32.dll

関連項目

glAlphaFunc

glBegin

glBlendFunc

glDepthFunc

glEnable

glEnd

glIsEnabled

glLogicOp

glStencilFunc