SFML C++

Введение

SFML (англ. Simple and Fast Multimedia Library — простая и быстрая мультимедийная библиотека) — свободная кроссплатформенная мультимедийная библиотека.

Написана на C++ , но доступна также для C , C#, .Net , D, Java , Python , Ruby , OCaml, Go и Rust. Представляет собой объектно-ориентированный аналог SDL .

SFML содержит ряд модулей для простого программирования игр и мультимедиа приложений. Исходный код библиотеки предоставляется под лицензией zlib/png license.

В настоящее время доступны следующие модули:

Загрузка библиотеки

Скачать SFML2 можно на сайте sfml-dev.org

Затем архив нужно распаковать, например, создав директорию

C:\Development\SFML2

Создание проекта

После этого в Visual Studio создайте пустой C++ проект. Консольное приложение для win32, например. И в этом проекте создайте файл main.cpp

Обычно проекты храняться в директории

C:\Users\Username\source\repos

Например, мой проект с тетрисом лежит в

C:\Users\Andrei\source\repos\TetrisSFML

В Visual Studio можно открыть расположение файлов проекта нажав на его называние правой кнопкой мыши и выбрав

Open Folder in File Explorer

Затем нужно перейти в настройки проекта и подключить некоторые директории из SFML2 к проекту.

C/C++ General

В

C/C++ → General → Additional Include Directories

Нужно добавить путь до директории include

C:\Development\SFML2\include

Linker General

В

Linker → General → Additional Library Directories

Нужно добавить путь до директории lib

C:\Development\SFML2\lib

Linker Input

В

Linker → Input → Additional Dependencies

Нужно добавить следующие библиотеки

sfml-audio-d.lib sfml-graphics-d.lib sfml-network-d.lib sfml-system-d.lib sfml-window-d.lib

Из директории

C:\Development\SFML2\bin

Нужно скопировать следующие .dll в директорию проекта (чтобы лежали рядом с main.cpp)

Рисуем круг

sfml-dev.org

#include <SFML/Graphics.hpp> int main() { sf::RenderWindow window(sf::VideoMode(200,200), "SFML works!"); sf::CircleShape shape(100.f); shape.setFillColor(sf::Color::Green); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(shape); window.display(); } return 0; }

Автор статьи: Андрей Олегович