在Windows应用程序中,我同时打开了多个OpenGL窗口。理想情况下,我希望每个窗口都以60 fps的速度绘制,并与屏幕刷新同步。
对于每个渲染上下文,我调用
结果发现这些窗口“互相斗争”:看起来
如果我使用
是否有任何方法可以在OpenGL中实现我想要的效果?
对于每个渲染上下文,我调用
wglSwapIntervalEXT(1)
来打开垂直同步。每个窗口都有自己的显示线程,它会绘制帧,然后调用SwapBuffers
进行更新。结果发现这些窗口“互相斗争”:看起来
SwapBuffers
调用是同步的,并等待彼此,即使它们在不同的线程中。我测量了每个窗口的帧间时间,当有两个窗口时,帧率降至30 fps,三个窗口时为20 fps,依此类推。如果我使用
wglSwapIntervalEXT(0)
关闭垂直同步,则无论我打开多少个窗口,它们都可以愉快地以60 fps的速度刷新。但是,只有一个窗口打开时,与打开垂直同步相比,它并不那么流畅。是否有任何方法可以在OpenGL中实现我想要的效果?