TAO Framework: un acercamiento la multimedia multiplataforma.

De Grupo GNU/Linux de la Universidad del Cauca
Saltar a: navegación, buscar

Enero 26 de 2.005

Por Manuel Alejandro Cerón Estrada.


Contenido

Introducción

Desarrollar aplicaciones multimedia y videojuegos que funcionen en distintos sistemas operativos y distintas arquitecturas de hardware siempre ha sido algo muy difícil. Las tareas que tienen que ver con multimedia, como por ejemplo el rederizado en tiempo real de audio y vídeo 3D, por lo general requieren un gran poder computacional, lo que hace que los desarrolladores de este tipo de aplicaciones recurran a trucos que tocan muy de cerca al sistema operativo. Este acercamiento al S.O. es lo que hace complicada la portabilidad. Un ejemplo de esto se puede ver en el conjunto de librerías DirectX de Microsoft. Para la mayoría de las aplicaciones tradicionales, el acceso a funciones de hardware se hacen a través del sistema operativo; sin embargo, para las aplicaciones multimedia, que son más exigentes, esta vía puede resultar bastante lenta. Para cuando se lanzó Microsoft Windows 95 la mayoría de los videojuegos para PC todavía se programaban usando la plataforma MS-DOS, debido a que el acceso al hardware que brindaba Windows era muy lento. Fue entonces cuando Microsoft decidió crear DirectX[1], un conjunto de librerías que permitieran acceso a funciones de hardware de forma más directa, sin pasar por todos los callejones que usualmente crea el sistema operativo.

La mayoría de los videojuegos y aplicaciones multimedia para PC de hoy día son desarrollados usando DirectX. Obviamente que, además de ser un producto de Microsoft, DirectX está íntimamente ligado con el sistema operativo Windows. Todo esto hace que todas aquellas aplicaciones sean, en extremo, difíciles de portar a otras plataformas[2]. Pero, ¿por qué los desarrolladores no usan una alternativa de DirectX que sea más portable? La respuesta es: porque no la hay.

Existen varias librerías portables que hacen, cada una, parte de las tareas que hace DirectX. No obstante, estas librerías están dispersas y son muy heterogéneas. Su uso por parte de los desarrolladores implicaría bastantes problemas a la hora del desarrollo. Recientemente ha aparecido un proyecto de software libre que busca reunir todas estas librerías en un solo framework sobre las plataformas Mono y .NET, se trata del proyecto Tao Framework. En este artículo describiré en forma breve el Proyecto Tao Framework.

Tao Framework inició como proyectos separados que buscaban crear recubrimientos (bindings) de Mono/.NET para distintas librerías multimedia. Poco a poco, las personas encargadas de estos proyectos decidieron unir esfuerzos y reunir todo el trabajo en un solo proyecto. Actualmente Tao Framework hace parte oficial del Proyecto Mono.

Partes de Tao FrameWork

Tao Framework busca brindar soporte multimedia multiplataforma basándose en varias librerías reconocidas:

OpenGL. (Open Graphics Library)

OpenGL es una API creada por la empresa Silicon Graphics para el desarrollo de programas y juegos en 3D. Es utilizada por muchos juegos libres y propietarios. A diferencia de DirectX, esta API solo posee rutinas para el manejo de gráficos y no tiene soporte para sonido, entrada, red, etc. Sin embargo, tiene la ventaja de que es multiplataforma, con soporte para varios sistemas operativos como Windows, Linux/Unix, MacOSX y varias arquitecturas de hardware. Los juegos más conocidos que han sido creados con OpenGL son quizás aquellos de la compañía ID Software como las sagas de [1], Heretic y Quake. Gracias a que estos juegos usaron OpenGL, fue posible portarlos a GNU/Linux. Incluso muchos de ellos han sido liberados bajo la GPL.

La especificación del API de OpenGL es controlada por un grupo llamado Architecture Review Board, conformado por varias empresas importantes del sector de la multimedia como nVidia, ATI, Creative Labs, SGI, entre otras. La implementación libre por excelencia de OpenGL se llama MESA, la cual es una parte fundamental del [http//www.x.org Sistema X Window] y del proyecto DRI[3].

El recubrimiento de Mono/.NET para OpenGL es una de las partes más importantes del proyecto Tao Framework, siendo la interfaz principal para conectarse con las tarjetas aceleradoras 3D.

SDL (Simple DirectMedia Layer).

Loki Games, una empresa dedicada a portar a GNU/Linux juegos creados para el sistema operativo Windows, creo SDL en 1998 con el objetivo de crear una librería que permitiera portar juegos. SDL nace también con la idea de crear un DirectX multiplataforma. No obstante, aunque SDL realiza bastantes tareas, de vídeo, sonido, entrada y red, no tiene la potencia requerida para labores exigentes, por lo cual necesita asociarse con otras librerías. Este es el caso de los gráficos 3D en tiempo real, en donde es necesario combinar OpenGL con SDL para lograrlos. SDL es libre, cobijada por la licencia LGPL. Tiene versiones para casi cualquier sistema operativo que alguien se pueda imaginar. Gracias a esta librería ha sido posible portar juegos como Myth II, Civilization: Call to Power, Sim City 3000, Unreal Tournament, Soldier of Fortune, entre otros.

OpenAL (Open Audio Library)

El sonido 3D es una característica imprescindible para los juegos modernos. OpenAL es una librería multiplataforma para el manejo de audio tridimensional. Gracias a OpenAL es posible, de manera muy fácil, renderizar sonidos en un espacio de manera muy flexible. OpenAL también tiene la capacidad de acceder directamente a funciones avanzadas de la tarjeta de sonido y de controlar la llamada aceleración de audio.

OpenAL también es software libre (LGPL), fue creado por la compañía Creative Labs, la cual es una de las empresas con mayor experiencia en el campo de la multimedia para PC. Aunque OpenAL aún es una librería joven, ya cuenta con una gran cantidad de juegos que hacen uso de ella.

Cg (C for Graphics).

Como ya lo he dicho bastante, los videojuegos son una de las aplicaciones más exigentes, es por eso que a mediados de los años noventa, los desarrolladores se dieron cuenta de que los procesadores principales (CPUs) de los computadores personales no bastaban para los requerimientos de operaciones como el renderizado 3D. Fue entonces cuando a la industria se le ocurrió que los PC deberían tener un procesador adicional, que se encargara exclusivamente de las operaciones relacionadas con los gráficos. A estos nuevos procesadores se les llamó GPU o Unidades de Procesamiento Gráfico; su objetivo es precisamente el de liberar a la CPU de las operaciones relacionadas con gráficos. Las GPUs se colocan en las tarjetas de vídeo, es lo que ahora se conoce como tarjetas aceleradoras 3D. Al principio las GPU estaban programadas para hace tareas específicas de la tubería de renderizado gráfico (graphic rendering pipeline), pero pronto esto se volvío poco flexible y algunos desarrolladores necesitaban programar directamente el GPU. Anteriormente, programar el GPU requería complicadas instrucciones en lenguaje ensamblador específico, fue entonces cuando apareció Cg, un toolkit para programar GPUs.

Cg define un nuevo lenguaje parecido al C para programación de shaders (modificaciones en la tubería de renderizado), fue desarrollado por la empresa fabricante de GPUs nVidia.

DevIL (Development Image Library)

DevIL[4] es una librería para cargar y guardar una enorme cantidad de formatos de imágenes. Definitivamente este es un aspecto bastante importante para el desarrollo de aplicaciones multimedia. Las imágenes son fundamentales para decorados, texturas, mapas, etc. Por supuesto DevIL también es libre ((LGPL))

ODE (Open Dynamics Engine)

ODE es una librería para la simulación de la dinámica de cuerpos rígidos. Esta esta una tarea escencial para los videojuegos y la realidad virtual. ODE ahorra el trabajo de calcular complicadas fórmulas físico-matemáticas para tratar de representar la física de objetos.

ODE es un proyecto de software libre, dispone de dos licencias para que el desarrolladores escoja: BSD y (LGPL),

Más características de Tao Framework

Tao Framework cuenta con otras características que lo hacen bastante atractivo para los futuros desarrolladores:

  • Software Libre. No podía ser de otra manera. Tao está disponible bajo la licencia MIT X11, la cual es bastante flexible tanto para desarrolladores de software libre, como para desarrolladores de software propietario.
  • Portabilidad a nivel binario. Gracias a que Taose basa en Mono, es portable a nivel binario (la misma librería .dll sirve en todos los casos) a todas las plataformas soportadas por Mono.
  • Independencia del Lenguaje. Al ser Tao Framework compilado en un Lenguaje Intermedio, puede ser usado por cualquier lenguaje soportado por Mono/.NET.

Referencias

[1] El significado del nombre DirectX se divide en dos, Direct significa acceso directo (al hardware), mientras que X representa los diferentes componentes de la librería como DirectDraw, Direct3D, DirectSound, DirectInput, etc.

[2] La empresa TransGaming ha intentado crear una implementación de DirectX, basada en la implementación libre del API de Windows Wine, llamada Cedega (anteriormente WineX). Aunque Cedega es capás de ejecutar algunos juegos y aplicaciones multimedia, dista mucho de ser perfecto

[3] Se puede obtener más información al respecto en mi artículo: [El Sistema X Window. Tercera Parte: Nuevas Tecnologías en X]

[4] Anteriormente conocida como OpenIL, pero debido a problemas legales con Silicon Graphics, quien tenía una librería con el mismo nombre, tuvo que cambiarlo.




El contenido del material publicado por nuestros columnistas es responsabilidad de sus autores.

Para saber más sobre la programación y naturaleza de nuestros artículos y columnas, haga clic aquí.