SFML (англ. Simple and Fast Multimedia Library — простая и быстрая мультимедийная библиотека) — свободная кроссплатформенная мультимедийная библиотека. Написана на C++, но доступна также для C, C#, .Net, D, Java, Python, Ruby, OCaml, Go и Rust. Представляет собой объектно-ориентированный аналог SDL.

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

Модули В настоящее время доступны следующие модули: System — управление временем и потоками; он является обязательным, так как все модули зависят от него. Window — управление окнами и взаимодействием с пользователем; поддерживает рисование с помощью OpenGL. Graphics — делает простым отображение графических примитивов и изображений. Audio — предоставляет интерфейс для управления звуком; для работы модуля необходим OpenAL. Network — управляет сетевой частью.

Пример кода Следующий код на языке C++ демонстрирует простейшее приложение на SFML (отображение окна и заливка его черным цветом): #include <SFML/Graphics.hpp>

int main() { // Создать окно sf::RenderWindow window(sf::VideoMode(1024, 768), "Hello, World!", sf::Style::Close);

// Ограничить частоту кадров в секунду до 60 window.setFramerateLimit(60);

// Основной цикл while (window.isOpen()) { // События sf::Event event;

// Обработка событий (нажатие кнопок, закрытие окна и т.д.) while (window.pollEvent(event))

// Закрыть окно если нажата кнопка "Закрыть" if (event.type == sf::Event::Closed) window.close();

// Очистить окно и залить его черным цветом window.clear(sf::Color::Black);

// Отобразить window.display();

return 0; }

Аналогичный пример кода на Си: #include <SFML/Graphics.h>

int main() { // Режим окна (ширина, высота, глубина цвета) sfVideoMode mode = {1024, 768, 32};

// Создать окно sfRenderWindow *window = sfRenderWindow_create(mode, "Hello, World!", sfClose, NULL);

// Ограничить частоту кадров в секунду до 60 sfRenderWindow_setFramerateLimit(window, 60);

// Основной цикл while (sfRenderWindow_isOpen(window)) { // События sfEvent event;

// Обработка событий (нажатие кнопок, закрытие окна и т.д.) while (sfRenderWindow_pollEvent(window, &event))

// Закрыть окно если нажата кнопка "Закрыть" if (event.type == sfEvtClosed) sfRenderWindow_close(window);

// Очистить окно и залить его черным цветом sfRenderWindow_clear(window, sfBlack);

// Отобразить sfRenderWindow_display(window);

// Уничтожить окно sfRenderWindow_destroy(window);

return 0; }

SFML на других языках программирования Название Язык Поддерживаемая версия CSFML 1 C 2.5 SFML.Net 1 C# 2.5 JSFML Java 2.2DerelictSFML2 D2.4 DSFML D 2.1csfml-fpc Free Pascal2.5 pySFML Python 2.3.2 rbSFML Ruby 2.3.2mruby-sfml mruby2.4 GoSFML2 Go 2.2go-sfml Go2.4 rust-sfml Rust2.4 Ocsfml OCaml 2.2 ocaml-sfml OCaml 2.0 EuSFML2 Euphoria 2.4 nim-csfml Nim 2.3 SFML.jl Julia 2.2 SFML Haskell 2.3.2 PasSfml Pascal 2.4 crsfml Crystal 2.5

См. также SDL ClanLib

Примечания

Литература

Ссылки Официальный сайт Видео по созданию платформера Super Mario на SFML Library Review: SFML Русскоязычный форум SFML

Категория:Свободные библиотеки программ Категория:Кроссплатформенное программное обеспечение Категория:Графические библиотеки Категория:Свободные игровые движки