SFML
Simple and Fast Multimedia Library | |
---|---|
![]() | |
Тип | API |
Разработчик | Лоран Крауд |
Написана на | C++ |
Операционная система | Кроссплатформенность |
Последняя версия | |
Репозиторий | github.com/SFML/SFML |
Лицензия | zlib License |
Сайт | sfml-dev.org |
SFML (англ. Simple and Fast Multimedia Library — простая и быстрая мультимедийная библиотека) — свободная кроссплатформенная мультимедийная библиотека. Написана на C++, но доступна также для C, C#, .Net, D, Java, Python, Ruby, OCaml, Go и Rust.[3] Представляет собой объектно-ориентированный аналог SDL.[4]
SFML содержит ряд модулей для простого программирования игр и мультимедиа приложений. Исходный код библиотеки предоставляется под лицензией zlib/png license.[5]
Модули
В настоящее время доступны следующие модули:
- 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 на других языках программирования[3]
Название | Язык | Поддерживаемая версия |
---|---|---|
CSFML Архивная копия от 16 сентября 2015 на Wayback Machine1 | C | 2.5 |
SFML.Net Архивная копия от 28 августа 2015 на Wayback Machine1 | .NET | 2.5 |
JSFML Архивная копия от 12 июня 2021 на Wayback Machine | Java | 2.2 |
DerelictSFML2 Архивная копия от 11 июня 2018 на Wayback Machine | D | 2.4 |
DSFML Архивная копия от 2 ноября 2015 на Wayback Machine | D | 2.1 |
csfml-fpc Архивная копия от 1 апреля 2019 на Wayback Machine | Free Pascal | 2.5 |
pySFML | Python | 2.3.2 |
rbSFML Архивная копия от 25 апреля 2015 на Wayback Machine | Ruby | 2.3.2 |
mruby-sfml Архивная копия от 1 апреля 2019 на Wayback Machine | mruby | 2.4 |
GoSFML2 Архивная копия от 4 августа 2015 на Wayback Machine | Go | 2.2 |
go-sfml Архивная копия от 1 апреля 2019 на Wayback Machine | Go | 2.4 |
rust-sfml Архивная копия от 4 августа 2015 на Wayback Machine | Rust | 2.4 |
Ocsfml Архивная копия от 2 января 2015 на Wayback Machine | OCaml | 2.2 |
ocaml-sfml Архивная копия от 13 июля 2015 на Wayback Machine | OCaml | 2.0 |
EuSFML2 | Euphoria | 2.4 |
nim-csfml Архивная копия от 11 августа 2015 на Wayback Machine | Nim | 2.3 |
SFML.jl Архивная копия от 16 августа 2015 на Wayback Machine | Julia | 2.2 |
SFML Архивная копия от 5 сентября 2015 на Wayback Machine | Haskell | 2.3.2 |
PasSfml Архивная копия от 11 июня 2018 на Wayback Machine | Pascal | 2.4 |
crsfml Архивная копия от 11 августа 2015 на Wayback Machine | Crystal Архивная копия от 25 июля 2013 на Wayback Machine | 2.5 |
См. также
Примечания
- ↑ Release 2.6.1 — 2023.
- ↑ SFML 2.5.1 released (неопр.). Дата обращения: 5 марта 2019. Архивировано 6 марта 2019 года.
- ↑ 1 2 Bindings (SFML / Download) (неопр.). www.sfml-dev.org. Дата обращения: 5 марта 2019. Архивировано 1 апреля 2019 года.
- ↑ Frequently Asked Questions (SFML / Learn) (неопр.). www.sfml-dev.org. Дата обращения: 5 марта 2019. Архивировано 22 февраля 2019 года.
- ↑ License (SFML / Learn) (неопр.). www.sfml-dev.org. Дата обращения: 5 марта 2019. Архивировано 6 марта 2019 года.
Литература
- Artur Moreira, Jan Haller, Henrik Vogelius Hansson. SFML Game Development. — Packt Publishing, 2013. — 296 p. — ISBN 978-1-84969-684-5.
- David Gouveia. 2. Audio Playback, Project 1 – building a simple audio manager // Getting Started with C++ Audio Programming for Game Development. — Packt Publishing, 2013. — 116 p. — ISBN 978-1-84969-909-9.
- Milcho G. Milchev. SFML Essentials. — Packt Publishing, 2015. — 132 с. — ISBN 978-1-78439-732-6.
- Maxime Barbier. SFML Blueprints. — Packt Publishing, 2015. — 298 с. — ISBN 978-1-78439-577-3.
Ссылки
- Официальный сайт Архивная копия от 10 февраля 2021 на Wayback Machine
- Видео по созданию платформера Super Mario на SFML Архивная копия от 18 сентября 2016 на Wayback Machine
- Library Review: SFML Архивная копия от 21 января 2012 на Wayback Machine
- Русскоязычный форум SFML Архивная копия от 29 сентября 2015 на Wayback Machine