Qt和OpenGL:如何尽可能频繁地渲染?

Mat*_*Mat 2 opengl qt timer game-loop

我正在将一个OpenGL应用程序从win32项目移植到Qt项目.

在win32项目中,我只需要一个mainloop,一旦前一个帧完成就继续执行下一帧.

在我找到关于Qt和OpenGL的教程中,他们使用计时器来控制场景的更新.但是,我想尽可能频繁地渲染帧数 - 如何做到这一点?

dat*_*olf 5

但是,我想尽可能频繁地渲染帧数 - 如何做到这一点?

不是Qt.Qt完全控制事件循环,因此无法为您提供任何直接执行空闲操作的方法.在Qt中执行空闲操作的标准方法是使用超时为0的QTime.

另一种可能性是仅使用第二个线程进行OpenGL操作.但是为了可靠地工作,您应该为该一个线程创建专用的OpenGL上下文.

对于那些主循环的主要任务是渲染图片,输入和事件管理只是次要的程序,Qt根本不是正确的工具包.

  • 严格来说,“QApplication.exec_()”采用事件循环。应该有一种方法可以使用“QApplication.processEvents()”来设置典型的渲染循环。我在这方面取得了一些成功,当我解决一些未解决的问题时我会发布。 (2认同)