pyopenGL在glTranslate / glrotate之后拾取



我写了一个pick函数,从opengl画布中挑选场景对象。

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()

如果我在绘制对象时不使用gltranslate或glrotate,则此工作完美也就是说,我可以在画的时候选线

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

但不是当我做,

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

我错过了什么?

在应用平移时,您仍然处于投影矩阵模式,因此混淆了拾取矩阵。转换场景前切换到modelview

相关内容

  • 没有找到相关文章

最新更新