情况如下:
我有4个SFML窗口,它位于我构建的容器中。容器为每个窗口调用独立的重绘方法,从第一个开始,到最后一个结束。
如果每个窗口的绘图代码包含行drawMyCube()
或glClear(...)
,则帧速率会变慢。
drawMyCube()
只是绘制一个根据sf :: Clock对象的值旋转的立方体。
如果一个窗口调用这些函数中的任何一个,则帧速率为~60fps。 如果两个窗口调用这些函数中的任何一个,则帧速率为~30fps。 如果三个窗口调用这些函数中的任何一个,则帧速率为~20fps。 最后,如果所有四个函数调用(这两个中的任何一个),则帧速率为~15fps。
这看起来像一个模式出现,所以我尝试从3个窗口中删除这些函数,并从一个窗口调用它们10次。我期待帧速率为~6fps,但它仍保持在60。
有谁知道为什么会这样?如果我从窗口绘制方法中删除任何其他函数似乎没有任何影响,例如,gluLookAt()
似乎没有减慢速度。
编辑:帧速率限制设置为零,vsync为false。
答案 0 :(得分:0)
这听起来就像垂直同步。您的每个窗口都在等待垂直刷新,这就是为什么您的费率会减少一半。
我知道你说vsync已关闭,但你的视频驱动程序可能正在强制它。检查您的驱动程序设置。