выбор openGL после glTranslate / glRotated - PullRequest
1 голос
/ 19 апреля 2011

Я написал функцию выбора для выбора объектов сцены из холста 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()

Это прекрасно работает, если я не использую glTanslate или glRotated при рисовании объекта, т.е. я могу выбрать линию при рисовании,

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

, но не когда я это делаю,

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

Чего мне не хватает?

1 Ответ

2 голосов
/ 19 апреля 2011

Вы все еще находитесь в режиме матрицы проекции, когда применяете перевод, что портит матрицу выбора.Перед преобразованием сцены переключитесь в режим просмотра модели.

...