Opengl 将图像显示与屏幕刷新率同步
程序的功能:用于显示图像(简单的jpg/png文件) 目标:在屏幕上显示/绘制与屏幕刷新率同步的图像 我希望实现的伪代码示例:Opengl 将图像显示与屏幕刷新率同步,opengl,pyqt,pyqt4,pyopengl,Opengl,Pyqt,Pyqt4,Pyopengl,程序的功能:用于显示图像(简单的jpg/png文件) 目标:在屏幕上显示/绘制与屏幕刷新率同步的图像 我希望实现的伪代码示例: pixmap = set_openGL_pixmap(myPixmap) draw_openGL_pixmap(pixmap) doSomthingElse() 理想情况下,draw\u openGL\u pixmap(pixmap)功能只能在屏幕刷新并显示图像后返回。而doSomthingElse()将在真正绘制图像后立即执行 我到目前为止所做的尝试: 在
pixmap = set_openGL_pixmap(myPixmap)
draw_openGL_pixmap(pixmap)
doSomthingElse()
理想情况下,draw\u openGL\u pixmap(pixmap)
功能只能在屏幕刷新并显示图像后返回。而doSomthingElse()
将在真正绘制图像后立即执行
我到目前为止所做的尝试:
- 在将pixmap设置为PyQt标签后使用:这似乎不太合适,因为它不处理与屏幕刷新率同步的问题
- 使用:即使这应该如文档所示,PyQt也不会在屏幕上绘制图像,直到调用,或者直到控件返回到应用程序的事件循环(即,当我调用的所有函数都已返回,GUI正在等待新事件)
- 使用-即使图像是使用OpenGL小部件渲染的,但它只有在显示其父对象时才可见,因此实际显示时间仍然取决于事件循环
- 使用-The
方法将立即显示图像。但是,我不认为在调用repaint()
时,它会等到屏幕刷新事件之后才返回李>repaint()
如何在发出命令的同时在屏幕上绘制图像(在小部件中),与屏幕刷新率同步,而不考虑事件循环。多亏Trialarion对我的问题的评论,我找到了解决方案 对于任何感兴趣的人,以下是显示与屏幕刷新率同步的图像的python代码: 导入系统 从PyQt4.QtCore导入* 从PyQt4.QtGui导入* 从PyQt4.QtOpenGL导入* app=QApplication(sys.argv) #使用交换间隔设置为1的QGLFormat qgl_format=QGLFormat() qgl_格式.setSwapInterval(1) #使用上述格式构造一个QGLWidget qgl_widget=QGLWidget(qgl_格式) #设置计时器以每0毫秒调用updateGL() 更新\u gl\u timer=QTimer() 更新\u gl\u计时器。设置间隔(0) 更新\u gl\u timer.start() update\u gl\u timer.timeout.connect(qgl\u widget.updateGL) #设置图形视图和场景 grview=QGraphicsView() grview.setViewport(qgl_小部件) 场景=qgraphicscene() scene.addPixmap(QPixmap('pic.png')) grview.setScene(场景) grview.show() sys.exit(app.exec_())
另请参见@Triarion谢谢!这就成功了