1

我有一个使用 wxPython 编写的 GUI,其中包含两个GLCanvases,一个“显示”画布和一个“预览”画布,我正在使用 PyOpenGL 在其上绘制一些非常简单的几何图形。'preview' 和 'display' 画布显示相同帧缓冲区的内容:

在此处输入图像描述

我需要以一致的帧速率同步更新这两个画布而不会撕裂。

到目前为止,我一直在打电话

self.SetCurrent()
# draw stuff...
self.SwapBuffers()

对于我的渲染循环中的预览和显示画布。如果我在我的驱动程序设置中禁用 vsync,这工作得相当好。

但是,如果我启用垂直同步,我的帧率会下降到 ~30Hz,我的显示器垂直刷新率的一半。大概这是因为渲染循环的执行在每次SwapBuffers()调用时都停止等待下一次垂直刷新 - 如果我注释掉这两个SwapBuffers()调用中的一个,我的帧率会回到 60Hz,但是当然只有我的一个画布得到更新.

我真正想要的是让我的两个画布同步更新,每个 vsync 间隔一次。有什么方法可以使用该wx.glcanvas.GLCanvas课程来实现这一目标吗?

4

1 回答 1

0

Andon 在他的评论中暗示的是,您使用 {wgl|glX}SwapInterval 设置第一个交换间隔,将 SwapBuffers 同步为 1,然后在同步 SwapBuffers 返回后立即将交换间隔设置为 0 并执行其他 SwapBuffers .

于 2013-09-11T22:15:37.130 回答