SFML绘制OpenGL到多个窗口的速度非常慢

SFML Drawing OpenGL to multiple windows extremely slow

本文关键字:速度 非常 窗口 绘制 OpenGL SFML      更新时间:2023-10-16

情况如下:

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

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

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

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

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

有人知道为什么会发生这种事吗?如果我从窗口绘制方法中删除任何其他函数,似乎不会有任何效果,例如,gluLookAt()似乎不会减慢它的速度。

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

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

我知道你说vsync关闭了,但可能是你的视频驱动程序在强制执行。请检查你的驱动程序设置。