因此,正如标题所示,我正在 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
的教程)可以工作,因此可以正确加载库。
有人可以帮我找到错误的原因吗?
除了崩溃,我没有编译器或应用程序错误。
答案 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;
}
您将获得: