SFML将OpenGL绘制到多个窗口非常慢

时间:2013-02-06 19:13:36

标签: c++ performance sfml frame-rate

情况如下:

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

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

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

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

这看起来像一个模式出现,所以我尝试从3个窗口中删除这些函数,并从一个窗口调用它们10次。我期待帧速率为~6fps,但它仍保持在60。

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

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

1 个答案:

答案 0 :(得分:0)

这听起来就像垂直同步。您的每个窗口都在等待垂直刷新,这就是为什么您的费率会减少一半。

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