【问题标题】:RenderWindow.display() causes sfml to crashRenderWindow.display() 导致 sfml 崩溃
【发布时间】:2018-05-14 06:50:13
【问题描述】:

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

关于为什么会发生这种情况的任何想法?

【问题讨论】:

  • 在 VS2013 上的代码对我来说很好,所以它必须与图形驱动程序有关

标签: c++ codeblocks sfml


【解决方案1】:

您好,您是否尝试在显示窗口之前清除它:

window.clear();

如果它不起作用,请尝试在显示类似于 sf::Sprite 之类的东西之前绘制一些东西。

可能导致这种情况的另一件事是您的窗口大小。因为您没有处于全屏模式,所以1920x1080 的大小太大了,因为操作系统会创建一个外部框架,并且可能会拉出屏幕......但这真的很奇怪......

PS:更喜欢使用sf::Event::Closed 作为您的switch/case

【讨论】:

  • 您好,我尝试在屏幕上绘制一个空白精灵,但是当我移动它时它仍然崩溃。还将分辨率更改为 200x200
  • 你如何移动你的精灵?我不知道这段代码怎么会崩溃。
  • 是窗口的移动导致它崩溃,而不是精灵
  • 那你怎么移动窗口呢?
  • 我用鼠标拖动它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 2020-12-02
  • 2013-11-11
  • 2011-01-24
  • 2015-02-23
  • 2011-04-23
  • 1970-01-01
相关资源
最近更新 更多