我刚开始学习sfml,每当我运行以下代码并尝试移动窗口时它会崩溃:
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
RenderWindow window(VideoMode(1920 , 1080), "Window", Style::Close | Style::Titlebar | Style::Resize);
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
switch(event.type)
{
case event.Closed:
window.close();
break;
case event.Resized:
std::cout << "New Window Width:" << event.size.width <<std::endl;
std::cout << "New Window Height:"<< event.size.height<<std::endl<<std::endl;
break;
}
}
window.display();
}
return 0;
}
当我从代码中删除window.display()
时,我可以移动窗口而不会崩溃。
我正在使用Codeblocks 16.01和SFML 2.4.2
有关为何会发生这种情况的任何想法?
答案 0 :(得分:0)
Hellow,你是否试图在显示之前清除窗口:
window.clear();
如果它不起作用,请尝试在显示之前绘制一些内容,例如sf::Sprite
。
可能导致这种情况的另一件事是窗户的大小。因为你不是全屏模式,所以1920x1080
的大小太大,因为外部框架将由操作系统创建,可能是它抽出屏幕......但那真的很奇怪......
PS:您希望sf::Event::Closed
switch/case