Tao Framework
Hace ya un tiempo, mientras me peleaba con distintos lenguajes de programación y librerías para realizar una aplicación capaz de mezclar y montar video en tiempo real descubrí este paquete y la verdad es que me quedé prendado de el por sus infinitas posibilidades.
Tao Framework es una librería que nos permite utilizar las funciones de diversas librerias libres,enfocadas principalmente a la programación de graficos y de videojuegos, con la gran ventaja de que es realmente multiplataforma, permitiendonos escribir programas que funcionarán tanto en Windows, como en Linux o en MacOS.
En si mismo el paquete no es una recompilación de las librerias que la componen, sino que simplemente es una interfaz (en inglés lo llaman wrapper) para poder utilizar directamente esas librerias, por lo que es preciso tener, además de las dlls del Tao Framework, los archivos de las librerias que deseemos utilizar. Lo que tampoco representa un gran problema ya que o bien estas vienen incluidas con el paquete para windows o bien se pueden encontrar con facilidad para el resto de sistemas.
El paquete, por ahora y en su versión 2.1 nos dispone de las siguientes librerias:
OpenGL - La conocida libreria grafica abierta para 2D y 3D. Aunque todavia no se soporta la recien llegada versión 3 se está trabajando para añadirla en la siguiente versión.
OpenAL - Que nos permite gestionar audio en 3D
FreeGLUT - Libreria libre que nos permite realizar algunas funciones complejas de OpenGL de forma simple.
GLFW - Libreria que permite realizar funciones complejas con OpenGL, además de manejar eventos y dispositivos de forma simple.
FreeType - Nos permite utilizar tipos de letra TrueType.
PhysFS - Nos permite manejar archivos comprimidos.
SDL - Completa libreria que permite manejar graficos, audio, eventos y dispositivos.
ODE - Libreria para integrar fisica dinamica en nuestos proyectos.
Lua - Libreria que permite insertar un motor para scripts en lenguaje Lua en nuestras aplicaciones.
DevIL - Libreria que permite el procesado de imagenes, aplicando filtros y transformaciones.
CG - Nos permite realizar efectos y transformaciones a los graficos realizados con OpenGL
FFmpeg - Libreria que permite abrir multitud de formatos de audio y video.
Si quereis probarla podeis descargarla desde su web, que si bien es bastante simple dispone de un foro activo donde resolver vuestras dudas.
El paquete de la libreria completa viene acompañada de muchos ejemplos. La mayoria de ellos adaptaciones de los ejemplos originales de las librerias mencionadas pasados a c#.
Las version para windows viene con las librerias compiladas y listas para utilizar. Además su instalador las registra en el sistema de forma que es muy facil empezar a utilizarla, aunque si se prefiere se puede recompilar facilmente ya que podemos abrir directamente los proyectos de visual studio o compilarlos en mono gracias a la aplicación Nant.
La versión para linux es algo más compleja de utilizar, principalmente porque no se incluyen las librerias a las que hace referencia el Tao framework, no obstante con descargar un par de paquetes extra en el sistema es igual de facil crear aplicaciones. A pesar de ese pequeño detalle, al ser las binarios compatibles con el CLR podremos utilizar las librerias directamente en linux sin necesidad de compilar de nuevo la libreria completa.
Cada una de las distintas librerias viene con su propio archivo dll por lo que no es preciso distribuir un megapaquete con nuestras aplicaciones a no ser que lo necesitemos todo.
Pero no todo es bonito en Tao framework. Si bien es una libreria muy util presenta diversos inconvenientes.
El primero de todos es la documentación, que si bien explica que hace cada funcion no explica como deben utilizarse, remitiendonos para ello a las webs de cada una de las librerias. No obstante, por la experiencia que tengo no es demasiado dificil dar con la forma correcta de utilizarlas.
Otro problema es la escasez de actualizaciones. La ultima versión completa, la 2.1 está fechada en mayo del 2008, Afortunadamente los desarrolladores son gente accesible y cuando tienen un rato libre van haciendo retoques a medida que se van encontrando errores. Por lo que si realmente deseamos tener corregidos los pocos fallos que han ido surgiendo durante este tiempo podemos descargarnos el ultimo codigo desde el SVN del proyecto donde incluso podeis encontrar algúna libreria extra. No obstante, por mi experiencia, esto no es necesario en la mayoria de proyectos.
Finalmente, el último problema con el que podemos encontrarnos, si realmente nos importa el tema de la velocidad de proceso, es que los programas realizados con Tao framework son ligeramente mas lentos que el mismo programa realizado llamando directamente a las librerias desde un lenguaque que no utiliza la plataforma .NET ya que el Runtime del .NET debe transformar las llamadas para acceder directamente a las librerías a las que se hace referencia, aunque una vez llamada a la función esta se ejecutará tan rapida como si se llamara directamente desde una aplicación no .NET. Esto puede ser un problema si utilizamos multiples funciones que requieran un tiempo corto de ejecucióní, por ejemplo en OpenGL. No obstante en las funciones con un tiempo de proceso más largo, como la aplicación de filtros en una imagen con DevIL esto se notará menos.
Resumiendo, si buscais una libreria que os permita hacer vuestros pinitos en el mundo de la multimedia y los videojuegos talvez esta sea la mejor elección, al menos yo le he cogido cariño.
Proximamente iré añadiendo articulos para que veais como se utiliza esta y otras librerias.

Deja una respuesta