Русская Википедия:SFML

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Infobox software 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 (отображение окна и заливка его черным цветом):

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

Название Язык Поддерживаемая версия
CSFML Шаблон:Wayback1 C 2.5
SFML.Net Шаблон:Wayback1 .NET 2.5
JSFML Шаблон:Wayback Java 2.2
DerelictSFML2 Шаблон:Wayback D 2.4
DSFML Шаблон:Wayback D 2.1
csfml-fpc Шаблон:Wayback Free Pascal 2.5
pySFML Python 2.3.2
rbSFML Шаблон:Wayback Ruby 2.3.2
mruby-sfml Шаблон:Wayback mruby 2.4
GoSFML2 Шаблон:Wayback Go 2.2
go-sfml Шаблон:Wayback Go 2.4
rust-sfml Шаблон:Wayback Rust 2.4
Ocsfml Шаблон:Wayback OCaml 2.2
ocaml-sfml Шаблон:Wayback OCaml 2.0
EuSFML2 Euphoria 2.4
nim-csfml Шаблон:Wayback Nim 2.3
SFML.jl Шаблон:Wayback Julia 2.2
SFML Шаблон:Wayback Haskell 2.3.2
PasSfml Шаблон:Wayback Pascal 2.4
crsfml Шаблон:Wayback Crystal Шаблон:Wayback 2.5

См. также

Примечания

Шаблон:Примечания

Литература

Ссылки

Шаблон:Prog-stub Шаблон:Rq