SFML

Desde el 2007 que fue creada, SFML permite crear aplicaciones multiplataformas que hace transparente el sistema de ventanas y eventos de un sistema operativo. SFML (Simple and Fast Multimedia Library) está escrito en C++ con un enfoque orientado a objetos para el desarrollo de aplicaciones interactivas enfocada en el desarrollo de juegos 2D, y con las versiones más recientes en 3D. Adicionalmente, SFML tiene diversos binding para los lenguajes de programación C, basados en .Net, D, Java, Python, Ruby, Go, OCaml, Nimrod, Euphoria y Rust. Actualmente, la v2.1 es su última versión estable (un gran cambio con respecto a las versiones v1.x).

Básicamente, se puede decir que SFML es un sistema de ventanas básico multiplataforma. Esto se puede evidenciar en los 5 módulos que la componen: System, Window, Graphics, Audio y Network.

  1. System: La base de las operaciones en SFML se hacen en este módulo la cual proporciona clases para el manejo de threads, control del tiempo, templates de streams, vectores, string, codificación hilos, control del tiempo, plantillas, entre otros.
  2. Window: Este módulo permite manejar la ventana de la aplicación independiente del sistema operativo. Este enfoque es ideal para crear un contexto en OpenGL (solamente con un #include <SFML/OpenGL.hpp>) y utilizarlo como FreeGLUT o GLFW. Del mismo modo, se puede gestionar los eventos propios de la ventana (cerrar, maximizar, re-dimensionar, etc.) y el manejo de dispositivos de entrada (teclado, ratón, joystick).
  3. Graphics: Permite utilizar la ventana como un canvas para el dibujado. Sprites, texturas, texto, diversas fuentes, formas básicas 2D, transformaciones, efectos con shaders, etc. son el conjunto de clases que nos ofrece este módulo.
  4. Audio: Como su nombre lo dice, permite el manejo de audio. En SFML hay 2 tipos de audio: Sound (archivo de sonido corto cargado en memoria) y Music (archivo largo de audio reproducido en streaming).
  5. Network: Consiste en un conjunto de clases para crear aplicaciones en red. Permite conexiones con sockets (TCP y UDP), http, ftp, packet, etc.

Esta librería totalmente orientada a objetos es mantenida actualmente por el francés Laurent Gomila (su sitio en github) y licencia zlib/png. SFML a su vez emplea otras librerías externas como GLEW, freetype, libjpeg, stb_image, OpenAL Soft y libsndfile. La libertad que permite SFML para ser integrado con otras librerías es asombroso. Un ejemplo de ello es su integración con Qt Creator, AntTweak Bar, CeGUI, GTK+, entre muchos otros.

Si quieres empezar a programar en SFML, ¡este es el momento! Un buen punto de partida son los tutoriales oficiales, que están divididos en la configuración e instalación de SFML y en cada uno de los 5 módulos que la conforman. En este enlace a una serie de videos de la versión 2.0. Por ejemplo, crear una ventana se hace con solo este código:

#include <SFML/Window.hpp>

int main(int argc, char** argv)
{
    sf::Window window(sf::VideoMode(1024, 768),
                      "SFML Example - CodigoGrafico");
    // run the program as long as the window is open
    while (window.isOpen())
    {
        // check all the window's events
        sf::Event event;
        while (window.pollEvent(event))
        {
            // when we close the window
            if (event.type == sf::Event::Closed)
                window.close();
        }
    }
    return 0;
}

Resumen: Si no has probado SFML, ¡ya es hora! Es una excelente librería para el manejo de ventanas/eventos/gráficos independientes del sistema operativo 🙂

Anuncios

Acerca de smittynpro

Escribiendo algunas cosas de computación gráfica
Esta entrada fue publicada en Algoritmos, Herramientas y etiquetada , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s