Fonctionnalités
Qu'est-ce que SFML ? Pourquoi devrais-je l'utiliser ?
SFML est une API portable et facile à utiliser, écrite en C++. Vous pouvez la voir comme une alternative
orientée objet à la SDL.
SFML est composée de nombreux modules pour coller parfaitement à vos besoins. Vous pouvez utiliser la SFML
en tant que système de fenêtrage minimal pour s'interfacer avec OpenGL, ou en tant que bibliothèque
multimédia riche en fonctionnalités pour construire des jeux vidéo ou des programmes interactifs.
Fonctionnalités principales
-
Portable
SFML compile sur les plateformes standards comme Windows (98, 2000, XP, Vista) et les systèmes Unix (Linux, Mac OS X). Au fur et à mesure de l'évolution de la bibliothèque, d'autres systèmes d'exploitation seront supportés. -
Orienté objet
SFML est écrite en C++ et fournit une architecture efficace et orientée objet. Elle utilise intensivement les motifs de conception et idiomes standards, pour fournir un framework simple et robuste. -
Facile à utiliser
SFML a pour but d'être facile à manipuler. Un effort particulier est mis sur le code interne, afin de fournir la plus simple des interfaces publiques. -
Flexible
Plutôt que d'être une grosse API, SFML contient plusieurs petits modules, qui peuvent être choisis et combinés selon l'utilisation que vous souhaitez en faire. Vous pouvez utiliser uniquement le module de base pour avoir un système de fenêtrage / évènements, ou bien le module graphique complet contenant sprites et post-fx par exemple. -
Facilement integrable
SFML peut être utilisée dans une ou plusieurs fenêtres, et/ou être intégrée à des composants d'interface existant. L'intégration avec des bibliothèques d'interface graphiques (GUI) est facile, ainsi vous pouvez ajouter des vues SFML à des interfaces complexes construites avec Qt, wxWidgets, MFC et autres.
Langages
SFML est disponible dans les langages suivants :
- C++
- C
- .Net (C#, VB.Net, C++/CLI, ...)
- Python
- D
- Ruby
Module système
- Mesure du temps portable et précise
- Threads et mutexs simples et orientés objet
- Module unicode pour les conversions entre encodages UTF et ceux dépendant de la locale
Module de fenêtrage
- Peut être utilisé comme module minimal et portable pour remplacer la SDL ou GLUT pour le fenêtrage et les évènements avec OpenGL
- Peut créer plusieurs fenêtres de rendu
- Peut être intégré dans des composants d'interfaces Qt / MFC / wxWidgets / Win32 / X11 / ... existantes
- Fournit une interface basée sur les messages et une interface temps réel pour les entrées (clavier, souris, joysticks)
- Peut gérer des souris possédant jusqu'à 5 boutons
- Peut gérer deux joysticks possédant jusqu'à 7 axes et 32 boutons
Module graphique
- S'interface très facilement avec OpenGL (voir les exemples OpenGL)
- Effets modernes disponibles et accélérés par le matériel : alpha-blending, rotations, shaders, ...
- Gère la mémoire de manière efficace, ainsi vous n'avez pas à vous préoccuper de la durée de vie ou du stockage des ressources ; vous pouvez même charger vos ressources graphiques avant qu'une fenêtre de rendu soit créée.
- Peut charger et sauvegarder les formats d'image standards : bmp, dds, jpg, png, tga, psd
- Peut charger toutes les ressources graphiques directement à partir de fichiers en mémoire
- Peut utiliser des vues à la manière des scènes 3D, pour zoomer / déplacer / tourner l'ensemble de la scène
- Utilise un langage de shader simplifié pour ajouter des post-effects en temps réel
- Manipulation aisée du texte via les polices graphiques
- Supporte les caractères unicode
- Peut charger les formats de polices de caractères standards : ttf, cff, pcf, fnt, bdf, pfr, sfnt, type 1, type 42
Module audio
- Utilise l'accélération matérielle si disponible
- Peut charger et sauvegarder les formats audio standards : ogg, wav, flac, aiff, au, raw, paf, svx, nist, voc, ircam, w64, mat4, mat5 pvf, htk, sds, avr, sd2, caf, wve, mpc2k, rf64
- Peut charger toutes les ressources audio directement à partir de fichiers en mémoire
- Spatialisation du son en 3D
- Interface simple pour réaliser des captures audio
- Gère la mémoire de manière efficace, ainsi vous n'avez pas à vous préoccuper de la durée de vie ou du stockage des ressources
- Supporte la lecture en flux (streaming) pour les sons volumineux ; vous pouvez même écrire votre propre classe de flux pour gérer tout type de source (réseau, ...)
- Supporte les formats multi-canaux (mono, stéréo, 4.0, 5.1, 6.1, 7.1)
Module réseau
- Fournit une couche portable pour les sockets TCP et UDP
- Transferts de données faciles via un système de paquets extensibles basé sur les flux
- Classes pour utiliser les protocoles internet HTTP et FTP
