GLSELECTBUFFER
Section: Misc. Reference Manual Pages (3G)
索引
xjman
名前
glSelectBuffer
- セレクションモードの値を持つためのバッファを用意する
書式
void glSelectBuffer(
GLsizei size,
GLuint *buffer )
引き数
- size
-
buffer の大きさを指定する。
- buffer
-
セレクションデータが返される。
説明
glSelectBuffer は引き数をふたつ取る:
buffer は符号なし整数の配列を指すポインタであり、
size は配列の大きさを示す。
レンダリングモードが GL_SELECT (glRenderMode を参照)
である時には、buffer には名前スタック(glInitNames,
glLoadName, glPushName を参照)からの値が返される。
glSelectBuffer はセレクションモードが有効にされるまえに
発行しなければならない。また、レンダリングモードが GL_SELECT で
ある時に発行してはならない。
プログラマはセレクションを使い、
ウィンドウのある領域にどのプリミティブが描画されたのかを
調べることができる。
この領域は現在のモデルビュー行列と射影行列によって定義される。
セレクションモードにおいては、ラスタライズ処理によって
ピクセルフラグメントが生成されることはない。
その代わりに、あるプリミティブまたはラスタ位置が、
視錘体とユーザ定義のクリッピング平面によって定義された
クリッピング領域と交差した場合は、このプリミティブは
「セレクションのヒット」を起こす。
(ポリゴンの場合、ポリゴンがカリング処理で省略された場合には
ヒットは起こらない。)
名前スタックに変更が起こった際や、
glRenderMode が呼ばれた際、
前回このようなイベント(名前スタックの変更や glRenderMode の
呼び出し)が起きてから何らかのヒットが起きていると、
ヒット記録が buffer にコピーされる。
ヒット記録は次の要素からなる。
まずイベントが起きた際に名前スタックに入っていた名前の数があり、
その後に前回のイベント以降にヒットしあt全ての頂点に関しての
深さの最大値と最小値が続き、最後に名前スタックの内容が続く。
名前スタックの内容はスタックの底にある名前が最初となる。
深さ値(この値は [0, 1] の範囲になる)には、ヒット記録に置かれる
前に 2^32 - 1 がかけられる。
buffer の中を指す内部インデックスは、
セレクションモードに入ると、その時点で必ず 0 にリセットされる。
ヒット記録が buffer にコピーされると必ず、
インデックスはインクリメントされ、名前のブロックの終りをちょうど
過ぎた場所を指す。すなわち利用可能な次の場所を指す。
ヒット記録が buffer に残っている位置の数より大きい場合には、
コピーできるだけのデータがコピーされてから、オーバーフローフラグが
設定される。
ヒット記録がコピーされた際に名前スタックが空ならば、
そのレコードは 0 で始まり、その後に深さの最小値と最大値が続く。
セレクションモードから抜け出るには、glRenderMode を
GL_SELECT 以外の引き数を指定して呼ぶこと。
レンダリングモードが GL_SELECT の時に glRenderMode を
呼ぶと必ず、この関数は buffer にコピーされたヒット記録の
数を返し、オーバーフローフラグとセレクションバッファを指すポインタ
をリセットし、名前スタックを空の状態に初期化する。
glRenderMode が呼ばれたときにオーバーフローフラグが設定
されていると、負のヒット記録数が返される。
注意
GL_SELECT 以外の引き数を指定して glRenderMode を
呼ぶまでは、buffer の内容は未定義である。
glBegin/glEnd プリミティブと、
glRasterPos の呼び出しは、ヒットを起こすことがある。
エラー
GL_INVALID_VALUE:
size が負の値の場合に起こる。
GL_INVALID_OPERATION:
レンダリングモードが GL_SELECT の際に glSelectBuffer を
呼ぶと起こる。また、glSelectBuffer が少なくとも一度呼ぶよりも
前に引き数 GL_SELECT を指定して glRenderMode を呼ぶと起こる。
GL_INVALID_OPERATION:
glBegin と、その対になる glEnd の間で glSelectBuffer
を実行すると起こる。
関連する取得値
引き数 GL_NAME_STACK_DEPTH を指定した glGet
引き数 GL_SELECTION_BUFFER_SIZE を指定した glGet
引き数 GL_SELECTION_BUFFER_POINTER を指定した glGetPointerv
関連項目
glFeedbackBuffer(3G),
glInitNames(3G),
glLoadName(3G),
glPushName(3G),
glRenderMode(3G)
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 注意
-
- エラー
-
- 関連する取得値
-
- 関連項目
-
Time: 07:01:10 GMT, January 12, 2009