SFML绘制OpenGL到多个窗口的速度非常慢
SFML Drawing OpenGL to multiple windows extremely slow
情况如下:
我有4个SFML窗口,它们在我构建的容器中。容器为每个窗口调用独立的重绘方法,从第一个开始,到最后一个结束。
如果每个窗口的绘图代码包含线drawMyCube()
或glClear(...)
,则帧速率会变慢。
drawMyCube()
只是绘制一个立方体,该立方体根据sf::Clock对象的值进行旋转。
如果一个窗口调用(其中任何一个)这些函数,则帧速率约为60fps。如果两个窗口调用(其中任何一个)这些函数,则帧速率约为30fps。如果三个窗口调用(其中任何一个)这些函数,则帧速率为~20fps。最后,如果所有四个函数都调用(其中任何一个),则帧速率为~15fps。
这看起来像是一种模式出现了,所以我尝试从其中3个窗口中删除函数,并在一个窗口中调用它们10次。我原以为帧速率是每秒6帧,但它仍然保持在60帧。
有人知道为什么会发生这种事吗?如果我从窗口绘制方法中删除任何其他函数,似乎不会有任何效果,例如,gluLookAt()
似乎不会减慢它的速度。
EDIT:帧速率限制设置为零,vsync为false。
这听起来就像垂直同步。您的每个窗口都在等待垂直刷新,这就是为什么您的速率不断减半的原因。
我知道你说vsync关闭了,但可能是你的视频驱动程序在强制执行。请检查你的驱动程序设置。
相关文章:
- 为什么在读取文件大小时文件IO速度会发生变化
- OpenGL大的3D纹理(>2GB)非常慢
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- 文件系统:复制功能的速度秘诀是什么
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- cl 生成的可执行文件在第一次运行时运行速度非常慢
- cmd 中的信息闪烁和更新速度非常快
- std::tan()在更新glibc后速度非常慢
- 嵌套的lambda表达式在用Visual C++编译和生成巨大的对象文件时速度非常慢
- QT创建者+SQLite.插入速度非常慢
- 导致CreateFile调用串行端口的速度非常慢的原因
- 对于非常接近零的值,双重计算运行速度要慢得多
- OpenGL对象在PC上以正常速度旋转,但在笔记本电脑上非常快
- 在OS X 10.8上使用SDL 2启动速度非常慢
- QTextEdit插入和删除行的速度非常慢.无论如何,让它更快
- 如果Windows资源管理器正在运行,Direct3D应用程序运行良好,否则速度会非常慢
- QTcpSocket每~0.5s才读取一次数据,即使是非常小的数据包,任何方法都可以加快速度
- 执行系统命令的速度非常慢
- SFML绘制OpenGL到多个窗口的速度非常慢