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 を設定する。 refglStencilFunc を使って指定する。
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

名前
書式
引き数
説明
注意
エラー
関連する取得値
関連項目

jman



Time: 07:01:11 GMT, January 12, 2009