SFML RenderWindow需要很长时间才能打开一个窗口

时间:2018-10-26 23:50:19

标签: c++ sfml

我知道这本质上是重复的,但是this从未得到回答。我想提一下,我有followed the tutorial可以将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,RenderWindow每次都需要40秒。有谁知道我该如何解决?我已经有几个星期了。

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

3 个答案:

答案 0 :(得分:1)

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

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

只要您不使用SFML的操纵杆部分,它就可以正常工作。

答案 1 :(得分:0)

SFML不和谐的撰稿人帮助我解决了这个问题,并向我展示了如何查看调用堆栈,结果发现冻结是在轮询dx输入时进行的,经过一番实验后我们发现怪我的k55键盘。我会在今晚晚些时候尝试找到修复程序,但是在短期情况下,拔掉它可以使一切正常。

答案 2 :(得分:0)

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