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)
私は何が欠けていますか?