pyqt5结合QOpenGLWidget绘图,使用定时器每20ms刷新一次动画,但是动画有拖影现象,手动进行旋转、移动等操作均没有拖影现象,不知道问题在哪儿,求指点。下面给出了自定义 myOpenGLWidget(QOpenGLWidget)的三个函数,动画刷新用的是update函数,下面图片就是动画过程中的现象。
def initializeGL(self):
gl.glShadeModel(gl.GL_FLAT)
gl.glEnable(gl.GL_DEPTH_TEST)
gl.glClearColor(49 / 255, 54 / 255, 59 / 255, 1)
def paintGL(self):
gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)
gl.glLoadIdentity()
glu.gluLookAt(self.eye[0], self.eye[1], self.eye[2], self.center[0], self.center[1], self.center[2],
self.up[0], self.up[1], self.up[2])
gl.glScale(self.scale, self.scale, 0)
self.drawZeroLine() # 绘制零线
self.drawArrow() # 绘制坐标轴
self.drawIndicateCircle() # 绘制三维圆
self.animation(modal=self.modal, f=1, t=self.animation_num) # 绘制动画
if not self.animationFlag: # 绘制模型
self.drawModal(modal=self.modal)
self.drawName(name=self.modalName, modal=self.modal)
def resizeGL(self, width, height):
gl.glViewport(0, 0, width, height)
gl.glMatrixMode(gl.GL_PROJECTION)
gl.glLoadIdentity()
x = self.radius / 0.9 * 1.2 # 设置视景体参数
if width <= height:
gl.glOrtho(-x, x, -x * height / width, +x * height / width, -x, x)
else:
gl.glOrtho(-x * width / height, +x * width / height, -x, x, -x, x)
gl.glMatrixMode(gl.GL_MODELVIEW)
gl.glLoadIdentity()