glSelectBuffer 関数

glSelectBuffer 関数は、選択モード値のバッファーを確立します。

構文

void WINAPI glSelectBuffer(
   GLsizei size,
   GLuint  *buffer
);

パラメーター

size

バッファーのサイズ。

バッファー

選択データを返します。

戻り値

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

エラー コード

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

名前 意味
GL_INVALID_VALUE
size が負の値でした。
GL_INVALID_OPERATION
この関数は、レンダリング モードがGL_SELECTされている間に呼び出されました。
GL_INVALID_OPERATION
glBegin の呼び出しと glEnd の対応する呼び出しの間に関数が呼び出されました。

解説

glSelectBuffer 関数には 2 つのパラメーターがあります。buffer は符号なし整数の配列へのポインターであり、size は配列のサイズを示します。 buffer パラメーターは、レンダリング モードがGL_SELECT場合に名前スタックから値を返します (glInitNamesglLoadNameglPushNameを参照)。 glSelectBuffer 関数は、選択モードが有効になる前に発行する必要があり、レンダリング モードがGL_SELECTされている間は発行しないでください。

選択は、ウィンドウの一部の領域に描画されるプリミティブを決定するためにプログラマによって使用されます。 領域は、現在のモデルビューおよびパースペクティブ マトリックスによって定義されます。

選択モードでは、ラスター化からピクセル フラグメントは生成されません。 代わりに、プリミティブが視錐台とユーザー定義のクリッピング平面によって定義されたクリップ ボリュームと交差する場合、このプリミティブによって選択ヒットが発生します。 (ポリゴンの場合、ポリゴンがカリングされている場合、ヒットは発生しません)。名前スタックに変更が加えられた場合、または glRenderMode が呼び出されると、最後のイベント (名前スタックの変更または glRenderMode 呼び出し) 以降にヒットが発生した場合、ヒット レコードがバッファーにコピーされます。 ヒット レコードは、イベント時の名前スタック内の名前の数で構成されます。その後に、前のイベント以降にヒットしたすべての頂点の最小および最大深度値が続きます。その後に名前スタックの内容が続き、下の名前が最初に続きます。

返される深度値は、最大符号なし整数値がウィンドウ座標の深さ 1.0 に対応し、0 がウィンドウ座標の深さ 0.0 に対応するようにマップされます。

バッファー への内部 インデックスは、選択モードに入るたびに 0 にリセットされます。 ヒット レコードが バッファーにコピーされるたびに、インデックスがインクリメントされ、名前のブロックの末尾のすぐ後にあるセルを次の使用可能なセルにポイントします。 ヒット レコードが バッファー内の残りの場所の数より大きい場合は、収まる限り多くのデータがコピーされ、オーバーフロー フラグが設定されます。 ヒット レコードのコピー時に名前スタックが空の場合、そのレコードは 0 で構成され、その後に最小値と最大の深度値が続きます。

選択モードは、GL_SELECT以外の引数を指定して glRenderMode を呼び出すことによって終了します。 レンダリング モードがGL_SELECTされている間に glRenderMode が呼び出されるたびに、 バッファーにコピーされたヒット レコードの数が返され、オーバーフロー フラグと選択バッファー ポインターがリセットされ、名前スタックが空に初期化されます。 glRenderMode が呼び出されたときにオーバーフロー ビットが設定された場合は、負のヒット レコード数が返されます。

buffer の内容は、glRenderMode が GL_SELECT 以外の引数で呼び出されるまで未定義です。

glBegin/glEnd プリミティブと glRasterPos の呼び出しでは、ヒットが発生する可能性があります。

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

引数GL_NAME_STACK_DEPTHを含む glGet

必要条件

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

関連項目

glBegin

glEnd

glFeedbackBuffer

glInitNames

glLoadName

glPushName

glRenderMode