Я использую PyQt и PyOpenGl, и у меня есть некоторые проблемы с обновлением modelview matrix
, когда я пытаюсь перевести/панорамировать. Рисунок/живопись делается в методе paintGL
modelview matrix не обновляется с использованием pyopengl и pyqt
def paintGL(self):
"""
display geometry
"""
# Clear the screen
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
# setup camera
glMatrixMode(GL_MODELVIEW)
# drawing here....
перевод/сковорода вызывается в методе mouseMoveEvent
def mouseMoveEvent(self, event):
dx = dxy.x()
dy = dxy.y()
if event.buttons() & Qt.MidButton:
# translate
if event.modifiers() & Qt.ControlModifier:
self.camera.translate(dx, dy, 0)
и Camera
объект с помощью метода translate
является:
class Camera(object):
'''
Connection between mouse motion and transformation matrix
'''
def __init__(self):
self.currentMatrix = []
self.reset()
def reset(self):
glPushMatrix()
glLoadIdentity()
self.currentMatrix = glGetDoublev(GL_MODELVIEW_MATRIX)
glPopMatrix()
def translate(self, x, y, z):
glPushMatrix()
glLoadIdentity()
glTranslatef(tx, ty, tz)
glMultMatrixf(self.currentMatrix)
self.currentMatrix = glGetFloatv(GL_MODELVIEW_MATRIX)
glPopMatrix()
проблема У меня есть то, что modelview matrix
преобразуется (при переводе - перемещение мыши), но до рисования modelview matrix
снова равен glLoadIdentity()
. Как можно изменить код для решения проблемы?