我正在使用PyQt和PyOpenGl,在尝试翻译/平移时,modelview matrix
的更新有一些问题。绘图/绘画采用方法paintGL
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
中调用
方法为Camera
的对象是:
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()
。如何修改代码以解决问题?在
如果有人会有类似的问题,我在这里张贴的解决方案,使我无法解决问题。在
OpenGLWidget
类中,我有以下代码(在其余代码中):因为类视图是在初始化
OpenGL
之前调用的,它总是将GL_MODELVIEW_MATRIX
作为零矩阵返回。 我的解决方案如下:代码:self.camera = camera_view.View()
移动到初始化
^{pr2}$OpenGL
的方法,即:希望这对任何人都有帮助。在
相关问题 更多 >
编程相关推荐