gpt4 book ai didi

windows - 将多个 OpenGL 窗口同步到 vsync

转载 作者:可可西里 更新时间:2023-11-01 12:53:16 24 4
gpt4 key购买 nike

在 Windows 应用程序中,我同时打开了多个 OpenGL 窗口。理想情况下,我希望每一个都以 60 fps 的速度绘制,并与屏幕刷新同步。

对于每个渲染上下文,我调用 wglSwapIntervalEXT(1) 来打开垂直同步。每个窗口都有自己的显示线程,绘制框架,然后调用 SwapBuffers 进行更新。

事实证明,这些窗口正在相互“争斗”:看起来 SwapBuffers 调用是同步的并相互等待,即使它们在不同的线程中也是如此。我正在测量每个窗口的帧到帧时间,有两个窗口时,这个时间下降到 30 fps,有 3 到 20 fps,等等。

如果我使用 wglSwapIntervalEXT(0) 关闭垂直同步,无论我打开多少个窗口,它们都会以 60 fps 的速度愉快地刷新。但是在打开一个窗口的情况下,这远不如打开 vsync 时那么流畅。

有什么方法可以用 OpenGL 完成我想要的吗?

最佳答案

在 Linux 中,由于从不同的线程调用视频函数,我的应用程序出现了很多奇怪的行为。

我解决了这些问题,在应用程序启动后使用一个线程仅用于显示、创建窗口、创建 glcontext 等,并使用信号量和队列在该线程与其他线程之间共享数据。

关于windows - 将多个 OpenGL 窗口同步到 vsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10043745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com