为什么这个 SFML 代码像应用程序一样运行,但不创建 Window?

Why Does this SFML Code Act like an App, But Does Not Create a Window?

堆栈溢出。我在最需要的时候来找你。

我开始学习C++了,学完Python,我想苦苦哀求地学习C++;也就是说,通过使用 SFML 制作游戏。我正在关注一本你可以找到的书 here。我将 MacOs Catalina 和 Clion 与 Cmake 一起使用。问题是,当使用下面列出的基本示例时,SFML 不会创建 window。 (抱歉我使用了命名空间)

我的代码:

// Include important C++ libraries here
#include <SFML/Graphics.hpp>

// Make code easier to type with "using namespace"
using namespace sf;

int main()
{

    // Create a video mode object
    VideoMode vm(1920, 1080);

    // Create and open a window for the game
    // RenderWindow window(vm, "Timber!!!", Style::Fullscreen);

    // Low res code
    RenderWindow window(vm, "Timber!!!");

    // Create a texture to hold a graphic on the GPU
    Texture textureBackground;

    // Load a graphic into the texture
    textureBackground.loadFromFile("graphics/background.png");

    // Create a sprite
    Sprite spriteBackground;

    // Attach the texture to the sprite
    spriteBackground.setTexture(textureBackground);

    // Set the spriteBackground to cover the screen
    spriteBackground.setPosition(0, 0);


    while (window.isOpen())
    {

        /*
        ****************************************
        Handle the players input
        ****************************************
        */

        if (Keyboard::isKeyPressed(Keyboard::Escape))
        {
            window.close();
        }

        /*
        ****************************************
        Update the scene
        ****************************************
        */


        /*
        ****************************************
        Draw the scene
        ****************************************
        */

        // Clear everything from the last frame
        window.clear();

        // Draw our game scene here
        window.draw(spriteBackground);

        // Show everything we just drew
        window.display();


    }

    return 0;
}

下面是我构建和执行时发生的情况的图像

我尝试重新安装 SFML,使 window 更小(书中建议我创建一个更小的 960 像素宽的 VideoMode 对象,然后 window.draw() 原来的 1920/1080图片*,但这没有用),重新构建项目,从 XCode 执行它,并将 SFML.dll 文件复制到我的主项目目录中(我还检查了我的项目目录)。

这正常吗?你知道我该如何解决吗?请注意它如何占据我的屏幕,就好像它是我当前正在使用的应用程序一样。谢谢你的时间。

我认为这是因为您缺少事件循环。必须轮询事件 window 才能正常工作。

sf::Event event;

// Then in your main loop...
while (window.pollEvent(event))
{
  // Handle events.
}