1

openglキャンバスからシーンオブジェクトを選択するためのpick関数を作成しました。

glRenderMode(GL_SELECT)
glMatrixMode(GL_PROJECTION)
glPushMatrix()
glLoadIdentity()
gluPickMatrix(self.last_point_2D_.x(),viewport[3]-self.last_point_2D_.y(),10,10,viewport)
glMultMatrixf(projection)

glInitNames()
glPushName(0)

//i scene objects rendering goes here, drawn in modelview
glLoadName(i)

glMatrixMode(GL_PROJECTION)
glPopMatrix()
glMatrixMode(GL_MODELVIEW)
glFlush()
glPopName()

これは、オブジェクトの描画にglTanslateまたはglRotatedを使用しない場合、つまり、描画するときに線を選択できる場合に最適に機能します。

glVertex3f(1,1,1)
glVertex3f(2,2,2)

しかし、私がそうするときはそうではありません、

glTranslate(1,1,1)
glVertex3f(0,0,0)
glVertex3f(1,1,1) 

私は何が欠けていますか?

4

1 に答える 1

2

翻訳を適用するときは、まだ射影行列モードになっているため、選択行列が台無しになります。シーンを変換する前に、モデル ビューに切り替えます。

于 2011-04-19T06:49:13.783 に答える