首页 > 解决方案 > SFML RenderWindow 需要很长时间才能打开一个窗口

问题描述

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

 #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 上遇到了同样的问题。

标签: c++sfml

解决方案


编辑:在您采用以下解决方案之前,请尝试更新您的键盘固件!您很可能使用的是 Corsair 键盘,因此请下载 Corsair 的iCue并更新您的键盘驱动程序。这很可能会解决这些问题。如果它不起作用,请尝试以下操作:

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

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

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


推荐阅读