GLSTENCILFUNC

Section: Misc. Reference Manual Pages (3G)
索引 xjman
 

名前

glStencilFunc - ステンシルテストの式と参照値を設定する

delim $$  

書式

void glStencilFunc( GLenum func,

                      GLint ref,
                      GLuint mask )

 

引き数

func
テスト式を指定する。 次の8つのトークンが有効である: GL_NEVER, GL_LESS, GL_LEQUAL, GL_GREATER, GL_GEQUAL, GL_EQUAL, GL_NOTEQUAL, GL_ALWAYS。 初期値は GL_ALWAYS である。
ref
ステンシルテストの参照値を指定する。 ref は [0,$2 sup n - 1$] の範囲に限定される。 ここで $n$ はステンシルバッファのビットプレーンの数である。 初期値は 0 である。
mask
マスクを指定する。 この値は、テストを行う際に、参照値および格納されているステンシル値の両方 との AND が取られる。 初期値では全てのビットが 1 である。
 

説明

ステンシル処理では(深さバッファリングと同じように) 描画の有効/無効がピクセルごとに切替えられる。 まず GL の描画プリミティブを使ってステンシルプレーンに描画し、 次に幾何形状やイメージをレンダリングする。 この際にステンシルプレーンが使われ、スクリーンの一部をマスクして 描画しないようにされる。 ステンシル処理は普通はマルチパスレンダリングアルゴリズムを 使って特殊な効果を得るために使われる。 例えば、転写、輪郭線抽出、CSG (constructive solid geometry) レンダリング などである。 ステンシルテストは、参照値とステンシルバッファ内の値の比較結果に 基づいて、条件的にピクセルを削除する。 ステンシルテストを有効または無効にするには、 glEnable および glDisable を引き数を 指定して GL_STENCIL_TEST を呼ぶ。 ステンシルテストの結果に従って起こる動作を指定するには glStencilOp を呼ぶ。 func はステンシル比較関数を決めるシンボル定数である。 この引き数には、後述のリストに示す 8 つの値を指定できる。 ref は参照値となる整数値であり、ステンシル比較に使われる。 この値は [0,$2 sup n - 1$] の範囲に限定される。 ここで $n$ はステンシルバッファのビットプレーン数である。 mask は参照値と格納されているステンシル値の両方とビットごとの AND が取られ、AND を取られた値が比較に使われる。 stencil が、対象となるステンシルバッファの位置に 格納されている値を表している場合、 以下のリストは func で指定できるそれぞれの比較関数の効果を 表す。 比較が成功した場合に限り、ピクセルはラスタライズ処理の次の段階に 進む(glStencilOp を参照)。 全てのテストは stencil の値を [0,$2 sup n - 1$] の範囲を持つ 符号無し整数値として扱う。 ここで $n$ はステンシルバッファのビットプレーン数である。 func には以下の値を指定できる:
GL_NEVER
必ず失敗する。
GL_LESS
( ref & mask ) < ( stencil & mask ) の場合に通過する。
GL_LEQUAL
( ref & mask ) < ( stencil & mask ) の場合に通過する。
GL_GREATER
( ref & mask ) > ( stencil & mask ) の場合に通過する。
GL_GEQUAL
( ref & mask ) > ( stencil & mask ) の場合に通過する。
GL_EQUAL
( ref & mask ) = ( stencil & mask ) の場合に通過する。
GL_NOTEQUAL
( ref & mask ) != ( stencil & mask ) の場合に通過する。
GL_ALWAYS
必ず通過する。
 

注意

初期状態ではステンシルテストは無効状態である。 ステンシルバッファがない場合には、ステンシルバッファの修正は 起こることがなく、ステンシルテストが必ず通過するような動作をする。  

エラー

GL_INVALID_ENUM: func が指定可能な 8 つの値のいずれでもない場合に起こる。 GL_INVALID_OPERATION: glBegin と、その対になる glEnd の間で glStencilFunc が実行されると起こる。  

関連する取得値

引き数 GL_STENCIL_FUNC を指定した glGet
引き数 GL_STENCIL_VALUE_MASK を指定した glGet
引き数 GL_STENCIL_REF を指定した glGet
引き数 GL_STENCIL_BITS を指定した glGet
引き数 GL_STENCIL_TEST を指定した glIsEnabled  

関連項目

glAlphaFunc(3G), glBlendFunc(3G), glDepthFunc(3G), glEnable(3G), glIsEnabled(3G), glLogicOp(3G), glStencilOp(3G)


 

Index

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

jman



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