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

Краткие факты Simple and Fast Multimedia Library, Тип ...
Simple and Fast Multimedia Library
Thumb
Тип API
Разработчик Лоран Крауд
Написана на C++
Операционная система Кроссплатформенность
Последняя версия
Репозиторий github.com/SFML/SFML
Лицензия zlib License
Сайт sfml-dev.org
Закрыть

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

Модули

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

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

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

См. также

Примечания

Литература

Ссылки

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.