glSelectBuffer 関数はセレクションモード値用のバッファを確立する。
glSelectBuffer size, buffer
size : [int] buffer のサイズ。 buffer : [var] 選択データを返す。
(プラグイン / モジュール : opengl32.dll)
glSelectBuffer 関数はセレクションモード値用のバッファを確立する。 [戻り値] この関数は値を返さない。 [備考] glSelectBuffer は 2 引数を取る。buffer は符号なし整数配列へのポインタ、size はその配列サイズ。レンダリングモードが GL_SELECT のとき (glRenderMode 参照)、buffer はネームスタック (glInitNames、glLoadName、glPushName) からの値を返す。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 |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の opengl32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_opengl32_gen2.hs |