SFML

Simple and Fast Multimedia Library
Логотип программы Simple and Fast Multimedia Library
Тип API
Разработчик Лоран Крауд
Написана на C++
Операционная система Кроссплатформенность
Последняя версия (18 октября 2018 года[1])
Репозиторий 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.[2] Представляет собой объектно-ориентированный аналог SDL.[3]

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

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.