SFML (Simple Fast Multimedia Library) - переносимый и простой в использовании мультимедийный API, написанный на C++. Вы можете рассматривать его как современную объектно-ориентированную альтернативу SDL. SFML состоит из нескольких пакетов, которые идеально подходят для ваших нужд. Вы можете использовать SFML как минимальную оконную систему для взаимодействия с OpenGL или как полнофункциональную мультимедийную библиотеку для создания игр или интерактивных программ.

Официальные ресурсы

Основные особенности

  • Переносимость: SFML компилируется на стандартных платформах, таких как Windows (98, 2000, XP, Vista, 7, 8 и 10) и системы Unix (Linux и Mac OS X). По мере роста библиотеки будет добавлена ​​поддержка большего количества операционных систем.
  • Объектно-ориентированный: SFML написан на C++ и обеспечивает эффективный объектно-ориентированный дизайн. Он опирается на стандартные шаблоны и идиомы, чтобы обеспечить простую и надежную структуру.
  • Простота использования: SFML нацелен на легкость управления. Во внутреннем коде стараются обеспечить простейший общедоступный интерфейс.
  • Гибкость: вместо того, чтобы быть одним большим API, SFML скорее содержит множество небольших пакетов, которые можно выбирать и комбинировать в соответствии с предполагаемым использованием. Вы можете использовать только базовый пакет для ввода и работы с окнами, а также полный графический пакет со спрайтами и пост-эффектами.
  • Легко интегрируется: SFML можно использовать в одном или нескольких окнах и / или интегрировать с существующими компонентами интерфейса. Интеграция с существующими библиотеками графического интерфейса пользователя (GUI) проста, так что вы можете добавлять представления SFML в сложные интерфейсы, построенные с помощью Qt, wxWidgets, MFC или чего-то еще.

Языки

SFML реализован на C++. Тем не менее, для других языков было создано несколько привязок, которые позволяют использовать SFML из C, C#, C++/CLI, D, Ruby, OCaml, Java, Python и VB.NET.

Система

  • Портативное и точное измерение времени
  • Простые и объектно-ориентированные потоки и мьютексы
  • Модуль Unicode для правильного преобразования между кодировками UTF и кодировками, зависящими от локали

Окно

  • Может использоваться как минимальный переносимый пакет для замены GLUT или SDL для управления окнами и ввода с помощью OpenGL.
  • Может создавать несколько окон рендеринга
  • Может быть интегрирован в компоненты существующих интерфейсов Qt, MFC, wxWidgets, Win32, X11 и др.
  • Предоставляет интерфейс на основе сообщений и в реальном времени для обработки ввода
  • Может работать с мышками с пятью кнопками
  • Может работать с четырьмя джойстиками с семью осями и 32 кнопками

Графика

  • Очень легко взаимодействует с OpenGL
  • Доступны современные эффекты с аппаратным ускорением: альфа-смешивание, вращение, шейдеры, ...
  • Эффективно управляет памятью, так что вам не нужно беспокоиться о сроке службы или хранении ресурсов; вы даже можете загрузить свои графические ресурсы до создания любого окна
  • Может загружать и сохранять стандартные форматы изображений: BMP, DDS, JPEG, PNG, TGA и PSD.
  • Может загружать все графические ресурсы прямо из файлов в памяти
  • Можно использовать виды, как в 3D-сцене, для масштабирования / перемещения / поворота всего мира
  • Использует упрощенный язык шейдеров для добавления пост-эффектов в реальном времени.
  • Простое управление графическим текстом с помощью растровых шрифтов
  • Поддерживает символы Юникода
  • Может загружать стандартные форматы файлов шрифтов: TTF, CFF, PCF, FNT, BDF, PFR, SFNT, PostScript Type 1, Type 42

Аудио

  • По возможности использует аппаратное ускорение
  • Может загружать и сохранять стандартные звуковые форматы: Ogg, WAV, FLAC, AIFF, Au, RAW, paf, 8SVX, NIST, VOC, IRCAM, W64, MAT4, MAT5 PVF, HTK, SDS, AVR, SD2, Core Audio Format, WVE, MPC2K, RF64
  • Может загружать все аудиоресурсы прямо из файлов в памяти
  • Пространство 3D звука
  • Простой интерфейс для записи звука
  • Эффективно управляет памятью, так что вам не нужно беспокоиться о сроке службы ресурсов или хранилище
  • Поддерживает потоковую передачу больших файлов; вы даже можете написать свой собственный класс потоковой передачи для любого источника (сеть, ...)
  • Поддерживает многоканальные форматы (моно, стерео, 4.0, 5.1, 6.1, 7.1)

Сеть

  • Реализует переносимый уровень через сокеты TCP и UDP.
  • Простая передача данных с помощью расширяемых пакетов на основе потоков
  • Классы для использования интернет-протоколов HTTP и FTP

Лицензия