簡體   English   中英

SFML RenderWindow需要很長時間才能打開一個窗口

[英]SFML RenderWindow taking a long time to open a window

我知道這是本質上是重復的,但這個不是永遠回答。 我想提一下,我遵循了將 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 上遇到了同樣的問題。

編輯:在您求助於以下解決方案之前,請嘗試更新您的鍵盤固件! 您很可能使用的是 Corsair 鍵盤,因此請下載 Corsair 的iCue並更新您的鍵盤驅動程序。 這很可能會解決這些問題。 如果它不起作用,請嘗試以下操作:

由於OP沒有進一步回復,我嘗試自己尋找解決方法,因為該問題在2020年仍然存在。此解決方法需要您自己編譯庫。 所以下載源代碼並更改以下內容:

  • WindowImpl.cpp ,導航到函數WindowImp::WindowImp並注釋掉整個函數體。
  • WindowImpl.cpp ,導航到WindowImp::popEvent並注釋掉對processJoystickEvents的調用

只要您不使用 SFML 的操縱桿部分,這應該沒有問題。

SFML discord 上的一位貢獻者通過瀏覽並向我展示如何查看調用堆棧來幫助我找到問題的根源,結果發現凍結是在輪詢 dx 輸入時發生的,經過一些實驗,我們找到了我的 k55鍵盤是罪魁禍首。 我會在今晚晚些時候嘗試找到修復方法,但在短期情況下,拔掉它會使一切正常。

我有相同的鍵盤(海盜船 K55)。 我的問題是 Corsair 的 iCue 軟件,退出它可以完全解決我的問題,而不必拔下我的鍵盤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM