RenderWindow.display()导致sfml崩溃

时间:2017-11-30 10:58:52

标签: c++ codeblocks sfml

我刚开始学习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

有关为何会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:0)

Hellow,你是否试图在显示之前清除窗口:

window.clear();

如果它不起作用,请尝试在显示之前绘制一些内容,例如sf::Sprite

可能导致这种情况的另一件事是窗户的大小。因为你不是全屏模式,所以1920x1080的大小太大,因为外部框架将由操作系统创建,可能是它抽出屏幕......但那真的很奇怪......

PS:您希望sf::Event::Closed

使用switch/case