GLSTENCILOP
Section: Misc. Reference Manual Pages (3G)
索引
xjman
名前
glStencilOp
- ステンシルテストのアクションを設定する
delim $$
書式
void glStencilOp(
GLenum fail,
GLenum zfail,
GLenum zpass )
引き数
- fail
-
ステンシルテストが失敗した際に行うアクションを指定する。
次の 6 種類のシンボル定数を指定できる:
GL_KEEP,
GL_ZERO,
GL_REPLACE,
GL_INCR,
GL_DECR, and
GL_INVERT。
初期値は GL_KEEP である。
- zfail
-
ステンシルテストを通ったが、深さテストには失敗した際の
アクションを指定する。
zfail には fail と同じシンボル定数を指定できる。
初期値は GL_KEEP である。
- zpass
-
ステンシルテストと深さテストの両方を通った場合、および
ステンシルテストを通りかつ深さバッファがないか深さテストが無効になっている場合
のアクションを指定する。
zfail には fail と同じシンボル定数を指定できる。
初期値は GL_KEEP である。
説明
ステンシル処理では(深さバッファリングと同じように)
描画の有効/無効がピクセルごとに切替えられる。
まず GL の描画プリミティブを使ってステンシルプレーンに描画し、
次に幾何形状やイメージをレンダリングする。
この際にステンシルプレーンが使われ、スクリーンの一部をマスクして
描画しないようにされる。
ステンシル処理は普通はマルチパスレンダリングアルゴリズムを
使って特殊な効果を得るために使われる。
例えば、転写、輪郭線抽出、CSG (constructive solid geometry) レンダリング
などである。
ステンシルテストは、参照値とステンシルバッファ内の値の比較結果に
基づいて、条件的にピクセルを削除する。
ステンシルテストを有効または無効にするには、
glEnable および glDisable を引き数を
指定して GL_STENCIL_TEST を呼ぶ。
制御を行うには glStencilFunc を呼ぶ。
glStencilOp は 3 個の引き数を取る。
これらの引き数は、
ステンシル処理が有効状態である際に、
格納されているステンシル値に起こることを指定する。
ステンシルテストが失敗した場合には、
ピクセルの色や深さバッファには変化は起こらない。
また、この場合には、ステンシルバッファの内容に対して行われること
は fail によって指定される。
以下に示す 6 個のアクションを指定できる。
- GL_KEEP
-
現在の値を保持する。
- GL_ZERO
-
ステンシルバッファの値として 0 を設定する。
- GL_REPLACE
-
ステンシルバッファの値として ref を設定する。
ref は glStencilFunc を使って指定する。
- GL_INCR
-
ステンシルバッファの現在値をインクリメントする。
上限は表現可能な符号なしの値の最大値に制限される。
- GL_DECR
-
ステンシルバッファの現在値をデクリメントする。
下限は 0 に制限される。
- GL_INVERT
-
ステンシルバッファの現在値をビット単位で反転させる。
ステンシルバッファの値は符号付き整数として扱われる。
インクリメントやデクリメントを行う際には、値は 0 と $2 sup n - 1$ の
間の値に制限される。
ここで $n$ は GL_STENCIL_BITS の問い合わせに対して返される
値である。
glStencilOp の残りのふたつの引き数は、
ステンシルテストの後に行われる深さバッファテストが
成功(zpass)したか失敗(zfail)したかによって変わる
ステンシルバッファのアクションを指定する(glDepthFunc を参照)。
アクションは fail と同じ 6 種類のシンボル定数を
使って指定する。
深さバッファがない場合、または深さバッファが有効状態でない場合
には zfail は無視される。
これらの場合には、fail はステンシルテストに失敗した場合の
アクションを指定し、zpass は成功した場合のアクションを
指定する。
注意
初期状態ではステンシルテストは無効になっている。
ステンシルバッファがない場合には、
ステンシルバッファの内容の変更が起こることない。
この場合、glStencilOp を呼んだかどうかに
かかわらず、ステンシルテストは必ず通るかのように振舞う。
エラー
GL_INVALID_ENUM:
fail, zfail, zpass のいずれかの値が
定義されている 6 個の定数ではない場合に起こる。
GL_INVALID_OPERATION:
glBegin と、その対になる glEnd の間で
glStencilOp を実行すると起こる。
関連する取得値
引き数 GL_STENCIL_FAIL を指定した glGet
引き数 GL_STENCIL_PASS_DEPTH_PASS を指定した glGet
引き数 GL_STENCIL_PASS_DEPTH_FAIL を指定した glGet
引き数 GL_STENCIL_BITS を指定した glGet
引き数 GL_STENCIL_TEST を指定した glIsEnabled
関連項目
glAlphaFunc(3G),
glBlendFunc(3G),
glDepthFunc(3G),
glEnable(3G),
glLogicOp(3G),
glStencilFunc(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- エラー
-
- 関連する取得値
-
- 関連項目
-
Time: 07:01:11 GMT, January 12, 2009