SFML

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Simple and Fast Multimedia Library
SFML2.svg
Тип 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.h>

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 на других языках программирования[4][править | править код]

Название Язык Поддерживаемая версия
CSFML1 C 2.5
SFML.Net1 .NET 2.5
JSFML Java 2.2
DerelictSFML2 D 2.4
DSFML D 2.1
csfml-fpc Free Pascal 2.5
pySFML Python 2.3.2
rbSFML Ruby 2.3.2
mruby-sfml mruby 2.4
GoSFML2 Go 2.2
go-sfml Go 2.4
rust-sfml Rust 2.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

История версий[править | править код]

  • 1.0 (Июль 2007)
    • 1.1 (18 Сентябрь 2007)
    • 1.2 (16 Январь 2008)
    • 1.3 (22 Июнь 2008)
    • 1.4 (7 Январь 2009)
    • 1.5 (4 Июнь 2009)
    • 1.6 (6 Апрель 2010)
  • 2.0 (29 Апрель 2013)
    • 2.1 (27 Июль 2013)
    • 2.2 (17 Декабрь 2014)
    • 2.3 (9 Май 2015)
      • 2.3.1 (11 Июль 2015)
      • 2.3.2 (25 Декабрь 2015)
    • 2.4 (7 Августа 2016)
    • 2.4.1 (4 Ноября 2016)
    • 2.4.2 (8 Февраля 2017)
    • 2.5.0 (9 Мая 2018)
    • 2.5.1 (18 Октября 2018)

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

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

  1. Bindings (SFML / Download). www.sfml-dev.org. Дата обращения 5 марта 2019.
  2. Frequently Asked Questions (SFML / Learn). www.sfml-dev.org. Дата обращения 5 марта 2019.
  3. License (SFML / Learn). www.sfml-dev.org. Дата обращения 5 марта 2019.
  4. Bindings (SFML / Download). www.sfml-dev.org. Дата обращения 5 марта 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.

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