SFML RenderWindow打开窗口需要很长时间



我知道这本质上是重复的,但从来没有得到回答。我想提到的是,我已经遵循了将SFML与Visual Studio一起使用的教程,并且我正在使用64位SFML运行一个64位项目。该窗口会立即加载几次,现在在新的构建/调试中始终需要40秒才能打开。我还关闭了调试符号的下载。我的图形驱动程序是最新的,我的硬盘驱动器也很好。这是代码:

#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");//This one
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}

除RenderWindow外,所有内容都以正常速度运行,每次只需40秒。有人知道我该怎么解决吗?我已经有这个问题好几个星期了。

e: 可能是我的CPU吗?这不是最好的,但我仍然可以打大多数比赛,因为我有1050ti。我目前的CPU是i5-2500k,尽管我相信我在A10-5800k上也遇到了同样的问题。

EDIT:在使用以下解决方案之前,请尝试更新键盘固件!你很可能使用的是海盗船键盘,所以下载海盗船的iCue并更新你的键盘驱动程序。这很可能会解决这些问题。如果不起作用,请尝试以下操作:

由于OP没有进一步回复,我试图自己找到一个解决办法,因为这个问题在2020年仍然存在。此解决方法要求您自己编译库。因此,下载源代码并更改以下内容:

  • WindowImpl.cpp中,导航到函数WindowImp::WindowImp并注释掉整个函数体
  • WindowImpl.cpp中,导航到WindowImp::popEvent并注释掉对processJoystickEvents的调用

只要您不使用SFML的操纵杆部分,这应该不会出现问题。

SFML不和的一位贡献者通过查看并向我展示如何查看调用堆栈来帮助我找到问题的根源,结果发现冻结是在轮询dx输入时发生的,经过一点实验,我们发现我的k55键盘是罪魁祸首。今晚晚些时候我会设法找到解决办法,但在短期内,拔掉插头会让一切正常。

我有相同的键盘(海盗K55(。对我来说,问题是海盗的iCue软件,退出它完全解决了我的问题,而无需拔下键盘。

最新更新