0

情况如下:

我有 4 个 SFML 窗口,它们位于我构建的容器内。容器为每个窗口调用独立的重绘方法,从第一个窗口开始,到最后一个窗口结束。

如果每个窗口的绘图代码都包含drawMyCube()OR行glClear(...),那么帧速率就会变慢。

drawMyCube()只是绘制一个立方体,它根据 sf::Clock 对象的值旋转。

如果一个窗口调用(其中任何一个)这些函数,则帧速率约为 60fps。如果两个窗口调用(其中任何一个)这些函数,则帧速率约为 30fps。如果三个窗口调用(其中任何一个)这些函数,则帧速率约为 20fps。最后,如果所有四个调用(其中一个)这些函数,则帧速率约为 15fps。

这看起来像是一种正在出现的模式,所以我尝试从 3 个窗口中删除函数,并从一个窗口调用它们 10 次。我原本预计帧速率约为 6fps,但仍保持在 60。

有谁知道为什么会这样?如果我从窗口绘图方法中删除任何其他功能,似乎没有任何效果,例如,gluLookAt()似乎不会减慢速度。

编辑:帧速率限制设置为零,vsync 为假。

4

1 回答 1

0

这听起来就像垂直同步。您的每个窗口都在等待垂直刷新,这就是您的费率不断减半的原因。

我知道您说 vsync 已关闭,但您的视频驱动程序可能正在强制它。检查您的驱动程序设置。

于 2013-02-06T19:18:05.397 回答