glSelectBuffer

glSelectBuffer 関数はセレクションモード値用のバッファを確立する。

glSelectBuffer size, buffer

size : [int] buffer のサイズ。
buffer : [var] 選択データを返す。

(プラグイン / モジュール : opengl32.dll)

解説

glSelectBuffer 関数はセレクションモード値用のバッファを確立する。

[戻り値]
この関数は値を返さない。

[備考]
glSelectBuffer は 2 引数を取る。buffer は符号なし整数配列へのポインタ、size
はその配列サイズ。レンダリングモードが GL_SELECT のとき (glRenderMode 参照)、buffer はネームスタック
(glInitNamesglLoadNameglPushName) からの値を返す。glSelectBuffer
はセレクションモード有効化前に発行し、レンダリングモードが GL_SELECT
の間は発行してはならない。セレクションはウィンドウのある領域に描画されるプリミティブを判定するために使う。領域は現在のモデルビューと透視行列で定義される。セレクションモードではラスタ化からピクセルフラグメントは生成されず、代わりにプリミティブが視錐台およびユーザー定義クリップ平面で定まるクリップ体積と交差すると、そのプリミティブはセレクションヒットを引き起こす
(ポリゴンはカリングされるとヒットしない)。ネームスタックが変更されるか glRenderMode
が呼ばれると、前回イベント以降にヒットがあれば buffer
にヒットレコードがコピーされる。ヒットレコードはイベント時のネームスタックの名前数、前回イベント以降ヒットした全頂点の最小/最大デプス値、ネームスタックの内容
(ボトムから順) で構成される。デプス値は最大の符号なし整数値がウィンドウ座標デプス 1.0、0 が 0.0
に対応するようマップされる。内部インデックスはセレクションモードに入るたび 0
にリセットされる。ヒットレコードが残り領域より大きい場合は入る分だけコピーされオーバーフローフラグが立つ。ネームスタックが空のときコピーされるレコードは
0 と最小/最大デプス値のみで構成される。GL_SELECT 以外を引数として glRenderMode
を呼ぶとセレクションモードを抜ける。GL_SELECT モード中に glRenderMode
が呼ばれると、コピーされたヒットレコード数を返し、オーバーフローフラグとセレクションバッファポインタをリセットしネームスタックを空にする。オーバーフロービットが立っていたら負のヒットレコード数を返す。buffer
の内容は GL_SELECT 以外で glRenderMode が呼ばれるまで未定義。glBegin/glEnd プリミティブと
glRasterPos 呼び出しはヒットを発生させ得る。関連情報は glGet (GL_NAME_STACK_DEPTH) で取得できる。

情報

プラグイン / モジュールopengl32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の opengl32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_opengl32_gen2.hs