SFML

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

Примечания

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