gluPickMatrix -
ピッキング領域を定義する
void
gluPickMatrix( GLdouble
x,
GLdouble y,
GLdouble delX,
GLdouble delY,
GLint *viewport )
引き数¶
- x, y
- ピッキング領域の中心をウィンドウ座標で指定する。
- delX, delY
- ピッキング領域の幅と高さをウィンドウ座標で指定する。
- viewport
- 現在のビューポートを指定する(glGetIntegerv
で得られる形式で指定)。
gluPickMatrix
は、描画をビューポートの小領域に制限するために
使える射影行列を作る。
この関数は普通、カーソル付近に描画されたオブジェクトを調べる際に
使える。 まず、
gluPickMatrix
を使って描画をカーソル回りの小領域に制限
する。 次に、(
glRenderMode
を使って)セレクションモードに入ってから
シーンを再描画する。
するとカーソルの近くに描画された全てのプリミティブが識別され、
セレクションバッファに格納される。
gluPickMatrix
が作った行列には現在の行列が掛けられる。
これは得られた行列を引き数に
glMultMatrix
を呼んだときと同様の
動作である。
作ったピッキング行列を効率的に使うためには、最初に
glLoadIdentity
を呼んで単位行列を透視射影行列スタックにロード
しておく。
そして次に
gluPickMatrix
を呼び、最後にコマンド
(
gluPerspective
等)を呼び出して透視射影行列にピッキング行列を
掛ける。
gluPickMatrix を使って NURBS
をピックする時には、
NURBS の
GLU_AUTO_LOAD_MATRIX
属性はオフにしておくこと。
GLU_AUTO_LOAD_MATRIX
属性がオフでなければ、
レンダリングされる全ての
NURBS
曲面は、ピッキング行列がない時と
ピッキング行列がある時で分割のされかたが異なる。
使用例¶
シーンを次のように描画する場合を考える:
glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(...);
glMatrixMode(GL_MODELVIEW);
ビューポート部分をピッキング領域としてセレクション操作できるようにする
には、次のようにする:
glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPickMatrix(x, y, width,
height, viewport); gluPerspective(...); glMatrixMode(GL_MODELVIEW);
関連項目¶
glGet,
glLoadIndentity,
glMultMatrix,
glRenderMode,
gluPerspective