SFML 窗口中的 Hello World

让我们编写一个小程序,它将打开一个窗口,并在屏幕上写下 Hello World

#include <SFML\Graphics.hpp>
#include <cassert>

int main() {
    sf::RenderWindow sfmlWin(sf::VideoMode(600, 360), "Hello World SFML Window");
    sf::Font font;
    //You need to pass the font file location
    if (!font.loadFromFile(/*
                           Put the filename that identify the font file you want to load*/"myfont.ttf")) {
        return -1;
    }
    sf::Text message("Hello, World !", font);

    while (sfmlWin.isOpen()) {

        sf::Event e;
        while (sfmlWin.pollEvent(e)) {

            switch (e.type) {
            case sf::Event::EventType::Closed:
                sfmlWin.close();
                break;
            }
        }

        sfmlWin.clear();
        sfmlWin.draw(message);
        sfmlWin.display();
    }
    return 0;
}

让我们解释一下我们在那里做了什么。

首先,我们创建了一个 sf::Font 对象。我们需要此对象来存储我们将用于显示文本的字体数据。之后,我们调用了 loadFromFile 方法,用于在内存中加载字体。我们应该注意到 SFML 不了解你的系统字体,因此你需要提供文件名,而不是字体名称

之后,我们创建了一个 sf::Text 对象。我们将 3 参数构造函数称为:

  • 要显示的字符串
  • 对象将使用的字体
  • 像素中的字符大小,我们没有在这里传递,因此 il 将被设置为默认值:30

由于 sf::Text 对象已准备就绪,我们只需要在主 sfml 循环中绘制它,方法是在我们之前创建的 sfmlWin 渲染窗口对象上调用 draw 方法