Biblioteca multimídia simples e rápida
Desenvolvido por |
Laurent Gomila Marco Antognini (porta Mac OS X) |
---|---|
Última versão | 2.5.1 (15 de outubro de 2018) |
Depósito | github.com/SFML/SFML |
Escrito em | C ++ |
Sistema operacional | Multi plataforma |
Meio Ambiente | Mac OS X , Windows , GNU / Linux |
línguas | Multilíngue |
Modelo | Biblioteca de software |
Licença | Licença Zlib / png |
Local na rede Internet | www.sfml-dev.org |
SFML é uma interface de programação para a construção de videogames ou programas interativos. Ele é escrito em C ++ , mas também está disponível em várias linguagens como C , D , Python , Ruby , OCaml ou Microsoft .NET . Entre outras coisas, visa oferecer uma alternativa orientada a objetos para SDL .
Também tem a particularidade de fornecer gráficos 2D acelerados utilizando OpenGL internamente, o que permite ao usuário dispensar o gerenciamento de pseudo-3D.
Composto por vários módulos, ele pode ser usado como um sistema mínimo de janelas para fazer interface com o OpenGL ou como uma biblioteca multimídia rica em recursos para criar videogames ou programas interativos.
SFML atualmente tem cinco módulos especializados separados. Esses diferentes módulos podem ser usados separadamente (exceto o módulo gráfico que também depende do módulo de janelas), mas todos dependem do módulo do sistema.
O módulo do sistema gerencia principalmente o tempo (relógio, etc.). Também oferece um sistema de thread que permite que várias sequências de instruções sejam executadas em paralelo, por exemplo, para melhorar o desempenho ou criar um gerenciamento de rede eficiente. No entanto, os desenvolvedores recomendam o uso da classe std :: thread presente na biblioteca padrão desde o padrão C ++ 11 .
O módulo de janelamento gerencia a criação de janelas e suas características (tamanho, tela cheia, antialiasing , sincronização vertical , framerate ...). Também gerencia as interações com o usuário graças a um sistema de eventos ( teclado , mouse , joystick, etc.). Por fim, pode ser utilizado o SFML como interface com OpenGL, o que por si só não é suficiente para criar um programa completo e requer, entre outras coisas, um sistema de janelas e interação com o usuário.
O módulo gráfico permite desenhar qualquer objeto que seja visível na janela ( retângulos , discos , polígonos , textos ... mas também formas mais complexas graças às tabelas de pontos) e aplicar uma textura a ele . Esses objetos podem ser transformados ( translação , rotação , homotetia ). Também gerencia a câmera 2D e permite a execução de shaders escritos em GLSL .
O módulo de áudio permite reproduzir sons e música nos formatos WAV , OGG / Vorbis ou FLAC (por motivos de licenciamento, o formato MP3 não é compatível). Ele também gerencia efeitos simples, como volume, afinação , espacialização ou reprodução em loop.
O módulo de rede permite o uso portátil de sockets , com o protocolo TCP (conectado) ou o protocolo UDP (não conectado) e oferece um sistema de pacotes para serializar facilmente os dados. Ele também permite que você se comunique com um servidor HTTP e transfira arquivos usando o protocolo FTP .
A seguir, um programa simples para obter uma visão geral rápida do SFML 2.0. Este código apenas abre uma janela e exibe o texto "Hello World" em uma imagem exibida em segundo plano.
#include <SFML/Graphics.hpp> int main() { // Crée la fenêtre principale avec comme titre "Hello World" sf::RenderWindow window(sf::VideoMode(800, 600), "Hello World"); // Charge un sprite à afficher sf::Texture texture; if (!texture.loadFromFile("background.jpg")) { return EXIT_FAILURE; } sf::Sprite sprite(texture); // Crée un texte sf::Font font; if (!font.loadFromFile("arial.ttf")) { return EXIT_FAILURE; } sf::Text text("Hello World", font, 18); // Boucle principale while (window.isOpen()) { // Gestion des événements sf::Event event; while (window.pollEvent(event)) { // Fermeture de la fenêtre if (event.type == sf::Event::Closed) { window.close(); } } window.clear(); // Efface l'écran window.draw(sprite); // Affiche le sprite window.draw(text); // Affiche le texte window.display(); // Met à jour la fenêtre } return EXIT_SUCCESS; }O número indicado fornece a versão em que a biblioteca está disponível.