SFML

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Simple and Fast Multimedia Library
Логотип программы Simple and Fast Multimedia Library
Тип API
Разработчик Laurent Gomila
Написана на C++
Операционная система Cross-platform
Последняя версия 2.5.1
Лицензия zlib License
Сайт sfml-dev.org

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

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

Модули[править | править код]

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

  • System — управление временем и потоками, он является обязательным, так как все модули зависят от него.
  • Window — управление окнами и взаимодействием с пользователем.
  • Graphics — делает простым отображение графических примитивов и изображений.
  • Audio — предоставляет интерфейс для управления звуком.
  • Network — для сетевых приложений.

Hello World[править | править код]

Следующий код на языке C++ демонстрирует простейшее приложение на SFML (отображаем окно и заливаем его синим цветом):

// Подключаем заголовок модуля Graphics, а он автоматически подключает заголовок модуля Window
#include <SFML/Graphics.hpp>

int main()
{
    // создаём окно
    sf::RenderWindow app(sf::VideoMode(800, 600, 32), "Hello World - SFML");

    // основной цикл
    while (app.isOpen())
    {
        // проверяем события (нажатие кнопки, закрытие окна и т.д.)
        sf::Event event;
        while (app.pollEvent(event))
        {
            // если событие "закрытие окна":
            if (event.type == sf::Event::Closed)
                 // закрываем окно 
                app.close();
        }

        // очищаем экран и заливаем его синим цветом
        app.clear(sf::Color(0,0,255));

        // отображаем на экран
        app.display();
    }

    return 0;
}

Пример кода на Си (отображение окно и заливание его белым цветом):

#include <SFML/Graphics.hpp>

int main()
{
	sfVideoMode mode = {480, 320, 32};
	sfRenderWindow* window;
	sfEvent event;

	window = sfRenderWindow_create(mode, "Hello, World!", sfResize | sfClose, NULL);

	while (sfRenderWindow_isOpen(window))
	{
		while (sfRenderWindow_pollEvent(window, &event))
		{
			if (event.type == sfEvtClosed)
			sfRenderWindow_close(window);
		}
		sfRenderWindow_clear(window, sfWhite);
		sfRenderWindow_display(window);
	}
	sfRenderWindow_destroy(window);
	return 0;
}

SFML на других языках программирования[1][править | править код]

Название Язык Поддерживаемая версия
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

См. также[править | править код]

Примечания[править | править код]

  1. 1 2 Bindings (SFML / Download). www.sfml-dev.org. Дата обращения: 5 марта 2019. Архивировано 1 апреля 2019 года.
  2. Frequently Asked Questions (SFML / Learn). www.sfml-dev.org. Дата обращения: 5 марта 2019. Архивировано 22 февраля 2019 года.
  3. 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.

Ссылки[править | править код]