我有一个使用 wxPython 编写的 GUI,其中包含两个GLCanvas
es,一个“显示”画布和一个“预览”画布,我正在使用 PyOpenGL 在其上绘制一些非常简单的几何图形。'preview' 和 'display' 画布显示相同帧缓冲区的内容:
我需要以一致的帧速率同步更新这两个画布而不会撕裂。
到目前为止,我一直在打电话
self.SetCurrent()
# draw stuff...
self.SwapBuffers()
对于我的渲染循环中的预览和显示画布。如果我在我的驱动程序设置中禁用 vsync,这工作得相当好。
但是,如果我启用垂直同步,我的帧率会下降到 ~30Hz,我的显示器垂直刷新率的一半。大概这是因为渲染循环的执行在每次SwapBuffers()
调用时都停止等待下一次垂直刷新 - 如果我注释掉这两个SwapBuffers()
调用中的一个,我的帧率会回到 60Hz,但是当然只有我的一个画布得到更新.
我真正想要的是让我的两个画布同步更新,每个 vsync 间隔一次。有什么方法可以使用该wx.glcanvas.GLCanvas
课程来实现这一目标吗?