glfwSwapBuffers真的很慢(没有vysnc)



我制作了一个基本的opengl程序并打开它,在发布模式下,我只得到2400fps,下降到700fps,我真的很困惑,所以我删除了主循环中的所有内容,直到代码看起来像以下


while (true)
{
glfwSwapBuffers(window);

}

现在我只得到3400-400fps(我切换到释放模式(。

关于上下文,我用DirectX 11制作了一个游戏,当没有任何东西绘制时,它会获得8000fps的速度,这与输入和游戏逻辑有关,而不是一个空循环。

我已经尝试编译我自己的glfw并使用预编译的二进制文件。我想,也许我需要弄清楚如何构建glfw作为我的项目的一部分,这样我就可以得到更多的优化。

我真的很困惑,我想在这场比赛中做一些繁重的事情,但当什么都没有发生的时候,我的表现已经减少了2-4倍。

最后一秒添加:人们一直在谈论glfwswapbuffer在其他线程上的性能较低,但在所有这些情况下,他们都在使用vysnc。(im使用glfwSwapInterval(0((

可能有多种原因影响glfwSwapBuffers的性能。由于它是异步工作的,因此同步为v-sync或监视器刷新率(60Hz?(可能会降低性能。通常,您希望您的引擎与其他进程同步(即使它们是一个限制因素(。您可能还想尝试glfwSwapInterval(0)

最新更新