情况如下:
我有 4 个 SFML 窗口,它们位于我构建的容器内。容器为每个窗口调用独立的重绘方法,从第一个窗口开始,到最后一个窗口结束。
如果每个窗口的绘图代码都包含drawMyCube()
OR行glClear(...)
,那么帧速率就会变慢。
drawMyCube()
只是绘制一个立方体,它根据 sf::Clock 对象的值旋转。
如果一个窗口调用(其中任何一个)这些函数,则帧速率约为 60fps。如果两个窗口调用(其中任何一个)这些函数,则帧速率约为 30fps。如果三个窗口调用(其中任何一个)这些函数,则帧速率约为 20fps。最后,如果所有四个调用(其中一个)这些函数,则帧速率约为 15fps。
这看起来像是一种正在出现的模式,所以我尝试从 3 个窗口中删除函数,并从一个窗口调用它们 10 次。我原本预计帧速率约为 6fps,但仍保持在 60。
有谁知道为什么会这样?如果我从窗口绘图方法中删除任何其他功能,似乎没有任何效果,例如,gluLookAt()
似乎不会减慢速度。
编辑:帧速率限制设置为零,vsync 为假。