SFML不会打开一个窗口?

时间:2012-10-29 05:16:53

标签: c++ c sfml

因此,正如标题所示,我正在 Windows上 CodeBlocks (MinGW v.4.7.0)中使用 SFML 1.6 创建一个简单的窗口7 (不,我没有使用ATI GPU)。

这是代码:

#include <SFML/Window.hpp>

int main()
{
    sf::Window App(sf::VideoMode(800, 600, 16), "SFML Window");
    App.Display();

    return 0;
}

每当我尝试运行此代码时,它只是说Program.exe is not responding并且必须使用Close this program关闭。有趣的是,SFML教程网站上提供的第一个教程(在控制台中使用sf::Clock的教程)可以工作,因此可以正确加载库。

有人可以帮我找到错误的原因吗?

除了崩溃,我没有编译器或应用程序错误。

2 个答案:

答案 0 :(得分:1)

问题是你没有创建主循环来轮询事件并处理OS消息。将其附加到main()(是的,这是SFML文档中的一个片段):

while (App.IsOpened())
{
   // Process events
   sf::Event Event;
   while (App.GetEvent(Event))
   {
      // Close window : exit
      if (Event.Type == sf::Event::Closed)
         App.Close();
   }

   // Clear the screen
   App.Clear();

   // Put your update and rendering code here...

   // Update the window
   App.Display();
}

因此,您无需在创建窗口后调用App.Display()

答案 1 :(得分:0)

对于那些想要整个东西的人来说,这是摘自SFML website的摘录。

#include <SFML/Window.hpp>

int main()
{
    sf::Window window(sf::VideoMode(800, 600), "SFML Window");

    // run the program as long as the window is open
    while (window.isOpen())
    {
        // check all the window's events that were triggered since the last iteration of the loop
        sf::Event event;
        while (window.pollEvent(event))
        {
            // "close requested" event: we close the window
            if (event.type == sf::Event::Closed)
                window.close();
        }
    }    

    return 0;
}

您将获得: