domingo, 3 de junio de 2012

Curiosidades DirectX, Las librerías Multimedia de Microsoft

 
DirectX es una API (Application Program Interface, Interfaz para Programas de Aplicación) de bajo nivel diseñada por Microsoft específicamente para aplicaciones de altas prestaciones que necesiten trabajar directamente con el hardware. Esta tecnología aprovecha las ventajas de las tarjetas aceleradoras hardware y emula funciones de aceleración cuando éstas no están presentes.
Para ello existen dos capas, denominadas HAL y HEL respectivamente. La Capa de Abstracción Hardware (HAL, Hardware Abstraction Layer) se emplea en el caso de que el hardware proporcione las funciones de aceleración 3D necesarias. En tal caso, el programador sólo debe centrarse en la aplicación, y no en el hardware.

En caso de que el hardware no cumpla dicha función será necesaria la emulación por software de dichas funciones, mediante la Capa de Emulación de Hardware (HEL, Hardware Emulation Layer), la cual redirige la ejecución de las funciones 3D al microprocesador, con la consiguiente sobrecarga de procesamiento de nuestro PC y la bajada de rendimiento del mismo.
DirectX está continuamente en evolución y esta ha sido aproximadamente la cronología que ha seguido a lo largo de su historia:

•DirectX 1. Versión preliminar que fue rápidamente reemplazada por DirectX 2 en el verano de 1996.

•DirectX 2. Versión que incluía los siguientes componentes:
1.DirectDraw: API con funciones gráficas 2D.
2.Direct3D: API con funciones gráficas 3D.
3.DirectPlay: proporcionaba conectividad para el juego de múltiples jugadores en Internet.
4.Directlnput: API que daba soporte a joysticks y otros dispositivos de entrada.
5.DirectSound: Proporciona funciones de mezcla y reproducción de audio.
Esta versión 2 se distribuyó con el paquete estándar de Windows 95 en su versión OSR2.

•DirectX 3. Fue desarrollada en el comienzo de octubre de 1996. Esta
versión contenía una serie de funciones adicionales, tales como:
1.Funciones DirectPlay mejoradas.
2.Direct3D con numerosos problemas solucionados y soporte para el microprocesador Pentium MMX.
3.DirectDraw con algunos problemas también solucionados.
4.DirectSound, ahora con soporte DirectSound3D.

•DirectX 3a. Desarrollada en diciembre de 1996, contenía las siguientes funciones adicionales:
1.Algunos errores solucionados para el Pentium MMX con Direct3D.
2.Una mejor instalación.
3.Se solucionaron algunos errores en la instalación de determinadas tarjetas de sonido.

•DirectX 5 y 6. Versiones mejoradas de DirectX que fueron apareciendo muy próximas en el tiempo, aunque no incorporaban tantas innovaciones como DirectX 7, versión en la que se produjeron importantes reestructuraciones y mejoras de estas librerías.

•DirectX 7. Incorporaba numerosas mejoras, entre ellas las siguientes:
1.Soporte DirectDraw para dispositivos de vídeo estéreo, como gafas 3D.
2.Soporte Direct3D para los últimos avances en hardware 3D: transformación e iluminación (transform and lighting), motores de iluminación y mapeado de entorno cúbico (cubic environment mapping).
3.Numerosas mejoras en el soporte de audio (DirectSound y DirectMusic).

•DirectX 8. Las principales mejoras que incluye esta versión se centran en el campo de los juegos en línea, ya sea a través de Internet o en una red de área local (LAN). Esta versión de DirectX permite a los jugadores hablar entre ellos, al mismo tiempo que juegan mediante la librería denominada DirectPlay Voice.

•DirectX 9. Revisión de las librerías de DirectX 8.
Luego le sucedieron las librerías DirectX 10 y DirectX 11.
Veamos cada una de las librerías que actualmente forman parte de DirectX con más detenimiento:
DirectDraw
Es el motor gráfico de DirectX para gráficos 2D, 3D, vídeo y animación, diseñado específicamente para juegos y otras aplicaciones que requieren altas prestaciones en sus gráficos. Básicamente se comporta como un núcleo de gestión de la memoria de vídeo, y es el soporte directo del resto de librerías gráficas de DirectX. DirectDraw proporciona las siguientes funciones 2D:

•Aceleración en el intercambio de páginas de vídeo y en la transferencia de bloques de bits.

•Conversión de formatos y colores.

•Aceleración en el remapeado de mapas de bits.

•Color Keying en transferencias de bloques de bits y overlays.

DirectDraw proporciona una ligera capa software directamente sobre el hardware, haciendo posible un tratamiento gráfico independiente del dispositivo y el acelerador gráfico. Además, se integra perfectamente con otros estándares de Microsoft, permitiendo incorporar fácilmente imágenes generadas por GDI, ActiveMovie y Direct3D.

Direct3D
Es un motor de renderizado de gráficos 3D en tiempo real. Al igual que DirectDraw, permite un acceso al hardware gráfico independiente del dispositivo, y proporciona funciones de transformación 3D, iluminación y rasterización. Direct3D dispone de dos API en dos niveles diferentes:

•Modo Retenido. API de alto nivel para manipular objetos y escenas 3D predefinidas, creados con programas de modelado externos, como 3DStudio. Este es el método más sencillo para crear una aplicación 3D. El modo retenido, o modo de alto nivel, permite la programación desde un nivel más alto, empleando por ejemplo funciones de la API de Windows. Simultáneamente se hace una traducción en tiempo real.

•Modo Inmediato. API de bajo nivel para renderizados basados en polígonos y vértices. Esto permite trasladar rápidamente juegos ya creados a Windows, conservando nuestro motor 3D. Así, por ejemplo, la API Reality Lab 3D de la empresa RenderMorphics fue integrada dentro de Direct3D. Más exactamente, Microsoft compró esta librería y a partir de ahí desarrolló Direct3D. El modo inmediato permite al programador el acceso directo a funciones especiales que nos pueden ofrecer determinados componentes hardware, como la tarjeta gráfica.

DirectPIay
Los juegos diseñados con DirectPIay permiten al usuario conectarse con otros jugadores a través de módem o red local. En 1996, Microsoft anunció la arquitectura DirectPIay Internet Gaming.
Esta es una tecnología que extiende las funciones de DirectPIay para juegos en línea en Internet. DirectPIay resuelve directamente los problemas de conectividad, permitiendo a los programadores centrar sus esfuerzos en el juego propiamente dicho.

DirectShow
Es una arquitectura de flujo multimedia que permite la captura y reproducción de contenidos multimedia de alta calidad. Estos contenidos incluyen audio y vídeo en una amplia variedad de formatos, principalmente MPEG, QuickTime, AVI y WAV. Esta librería emplea de manera automática la aceleración tanto de audio como de vídeo para proporcionar en todo momento el mejor rendimiento.

DirectAnimation
Proporciona un soporte unificado para animación, flujos multimedia e integración de diversos tipos de medios: gráficos 2D vectoriales, gráficos 3D, sprites, audio y vídeo.

Directlnput
Proporciona acceso a joysticks analógicos y digitales y a otros dispositivos de entrada capaces de manejar coordenadas en un sistema de coordenadas absolutas, como por ejemplo: pantallas táctiles, tabletas digitalizadoras y lápices ópticos, incluso dispositivos más nuevos como cascos de realidad virtual.

DirectSound
Proporciona acceso independiente del dispositivo que proporciona funciones como mezcla de audio en tiempo real, y control de efectos como volumen y balance durante la reproducción. Pero posiblemente la función más importante de DirectSound de cada a los desarrolladores de juegos es la capacidad de reproducir diferentes fuentes de sonido simultáneamente, posibilidad que hasta entonces sólo era capaz de ofrecer la tecnología de tabla de ondas.

DirectSound 3D
Ofrece capacidades de sonido 3D mediante el simple uso de unos altavoces o unos auriculares, permitiendo mover el sonido en un espacio tridimensional, en lugar del típico balance entre los canales derecho e izquierdo. Además, permite aceleración por hardware (o por software si el hardware no lo soporta) del procesamiento de audio en 3D.

DirectMusic
Es una extensión de DirectX que proporciona síntesis digital de audio, diseñada para chips avanzados de síntesis de ondas. Admite el estándar MIDI,
así como el estándar de sonidos descargables (DLS, DownLoadable Sound). Permite distintos efectos, como por ejemplo, cambiar la música de un juego dinámicamente, en función del nivel de acción, mediante variaciones en el volumen o en los instrumentos.

La tecnología ActiveX
No es una tecnología en sí misma, sino un apellido que se le coloca a muchas de las tecnologías de Microsoft en el campo de Internet y multimedia. Por ejemplo, los antiguos controles OLE de Windows se rebautizaron como controles ActiveX. Una de las tecnologías dentro de ActiveX es la que se conoce como ActiveMovie.

ActiveMovie es una arquitectura de Microsoft para audio y vídeo. ActiveMovie hace uso de DirectDraw para aprovechar la aceleración gráfica. Además de los formatos AVI y QuickTime, ActiveMovie soporta audio y vídeo MPEG gracias al Mediamatic Decoder. Estos componentes ActiveMovie están totalmente integrados en el navegador de Internet Microsoft Internet Explorer, lo que nos permiten reproducir audio y vídeo en cualquiera de los formatos soportados sin que debamos cargar ningún software adicional.
La librería OpenGL
OpenGL es una librería gráfica 3D de gran reputación, desarrollada por la empresa Silicon Graphics. Entre sus principales características está el hecho de que es independiente de la plataforma y dispone de dos modos de trabajo: modo inmediato y modo lista de visualización. En este último modo se almacenan en una lista secuencias de funciones gráficas específicas, que pueden ser ejecutadas posteriormente.

OpenGL proporciona un gran número de funciones gráficas, desde el renderizado hasta el dibujo simple de puntos, líneas, polígonos, pasando por sofisticadas representaciones de superficies curvas con iluminación y mapeado de texturas.

OpenGL se puede materializar en la práctica, bien mediante software o mediante hardware. Mediante software, OpenGL es una completa librería gráfica 2D y 3D. Mediante hardware, se implementan en los chips gráficos los circuitos necesarios para proporcionar aceleración a cualquier cosa que esté diseñada mediante OpenGL. Al hacerse todo el procesamiento mediante hardware, el sistema queda liberado del intensivo cálculo que ello puede suponer.

OpenGL proporciona una librería gráfica de uso bastante general, tanto en 2D como en 3D. En este último apartado permite funciones como sombreado plano, Phong y Gouraud, además de métodos aún más realistas, como trazadode rayos (Ray Tracing) y radiosidad. Asimismo, permite al programador 3D generación y mapeado de texturas, niebla, mapeado de entorno (environmental mapping), etc. No obstante, el hecho de ser una librería propietaria de Silicon Graphics ha frenado su utilización, por lo que hoy en día la gran mayoría de juegos y aplicaciones 3D para PC se decantan por las librerías DirectX de Microsoft, frente a unas pocas que emplean OpenGL.

Las claves para distinguir las capacidades de las aceleradoras 3D se centran en determinados aspectos, principalmente en las operaciones con texturas y en la aplicación de efectos ambientales. Cualquier aceleradora 3D actual para ser competitiva debe dar soporte a la última versión de la API DirectX de Microsoft, así como soporte para OpenGL.

Algunas de las técnicas empleadas actualmente por aceleradoras 3D, y que han sido mencionadas anteriormente, son las siguientes:

•Efecto anti-escalera (Antialiasing). Es una técnica que elimina el efecto escalonado que se produce en escenas generadas mediante un proceso de rasterización. Esta técnica es implementada por hardware en la práctica totalidad de las actuales aceleradoras 3D.

•Bump-Mapping. Es un truco visual que simula la rugosidad o suavidad de una textura generalmente mediante el uso de texturas individuales. Generalmente, se divide un triángulo en un gran número de triángulos más pequeños y se aplica un efecto de perturbación con lo que se consigue gran realismo y la sensación de rugosidad deseada.

•Efectos de iluminación, tales como sombreados, reflexión de la luz, proyección de sombras, refracción. Las fuentes de luz pueden ser de cualquier tipo, desde una luz interior, hasta la luz del sol, una explosión, etc.

• Corrección de perspectiva, operación que consiste en orientar adecuadamente las texturas sobre los polígonos, con lo que se consigue un mayor realismo. Básicamente, el objetivo que persigue es hacer que en un efecto de perspectiva, los objetos distantes aparezcan proporcionalmente más pequeños que aquellos más cercanos. Para conseguir un mayor realismo se suele aplicar la corrección de perspectiva, tanto a los objetos como a los colores, es decir, el color de los objetos cambia, se degrada, en función de la distancia a la que se encuentren.

•Dithering. También conocido como difusión de error. Éste es un efecto que actualmente se emplea en muchos contextos diferentes, incluyendo gráficos 2D y en procesos de impresión. El dithering, proceso que se podría traducir por “difuminado”, consiste en la mezcla de un pequeño número de colores en patrones específicos para crear la ilusión de que existe un gran número de colores. En 3D se usa el dithering cuando se pretende aumentar la profundidad de color de la escena, sin necesitar de tener que recurrir a más colores, lo que aumentaría la complejidad de cálculo.

•Mapeado de texturas (Texture Mapping). Proceso de aplicar las texturas sobre los polígonos. Existe una técnica más avanzada, el MIP Mapping, consistente en aplicar texturas de diferentes resoluciones en función de la profundidad de los objetos.

•Filtrado bilineal. Técnica que se aplica para evitar el aspecto difuso de las uniones entre texturas y polígonos, especialmente al aplicar efectos de perspectiva. Se basa en el cálculo de cada punto de imagen como interpolación de los que le rodean. El filtrado trilineal mejora aún más los cambios entre texturas de diferentes resoluciones al aplicar el MIP Mapping.

•Filtrado anisotrópico. La anisotropía es la distorsión que se puede observar en los texels de un polígono, cuya superficie está orientada según un determinado ángulo en relación con el plano de la pantalla. Esto produce efectos de emborronamiento y aliasing. El filtro anisotrópico que muchas tarjetas 3D implementan corrige este error en la medida de lo posible.

•Efectos de transparencia (Alpha Blending). Permiten ver a través de texturas aplicadas a determinados objetos. Para ello, a cada píxel de la escena se le aplica un valor de transparencia que puede ser opaco, traslúcido o transparente. Generalmente suele ser un valor de transparencia entre 0 y 1. Esta técnica se aplica en efectos como explosiones, humo, agua o cristal. Uno de estos efectos es el de la niebla (Fog Layering). También se puede simular el efecto de profundidad al iluminar los objetos de la escena (Deep Cueing).

S.S mundo en movimiento: vídeo digital

Desde los primeros tiempos de su existencia, el PC fue un ordenador sólo para texto. Posteriormente, se fueron incrementando sus capacidades gráficas hasta el punto de hacerse imprescindibles actualmente para cualquier tipo de trabajo. Una de las aplicaciones gráficas que más desarrollo ha experimentado es el vídeo digital, esto es, la reproducción de secuencias de vídeo en nuestro PC, con formato completamente digital.
Como consecuencia de esto, se han derivado diferentes aplicaciones del video digital, tales como:

•Juegos. Muchos de los juegos actuales emplean secuencias de vídeo digital para añadir realismo, llegando a convertirse en muchas ocasiones en una mezcla entre vídeo y juego propiamente dicho, especialmente en aquellos juegos denominados interactivos, tales como las aventuras gráficas o los juegos de rol.
•Reproducción y edición de vídeo. Muchas empresas ofrecen sus productos en CD-ROM, en forma de secuencias de vídeo digital. Asimismo, está muy extendida la edición digital de vídeo mediante el PC.
•Televisión en el PC. Actualmente se han generalizado el uso de tarjetas que permiten la sintonización de televisión directamente en el PC. A todas estas funciones contribuye de una forma muy directa la tarjeta gráfica que integre nuestro PC.

El estándar MPEG
Una de las capacidades que suelen tener las aceleradoras 3D es la reproducción de vídeo digital, y en algunos casos la decodificación MPEG mediante hardware. La idea de la reproducción de vídeo digital en el PC es relativamente nueva. El gran inconveniente de esto es la gran cantidad de información que es necesario mover en cada momento, para lo que se necesitan unas prestaciones adecuadas.

Supongamos que queremos reproducir 2 horas de vídeo en alta calidad y alta resolución. Supongamos una resolución de 640 x 480 aló bits de color por pixel (65.536 colores). Para almacenar las dos horas de vídeo necesarias con estas características, se necesitarían 133 Gb de espacio, y eso sin incluir el sonido. Evidentemente, esto es una cantidad totalmente imposible de manejar. La solución a este problema pasa por la compresión de la información.

MPEG-2
Aunque al reproducir un archivo MPEG-1 se obtiene una secuencia de vídeo de características parecidas a una cinta VHS, sin embargo se necesitaba más calidad de imagen para emplearlo a nivel profesional. Surgió así el MPEG-2,basado en las mismas técnicas, pero de una calidad equivalente a la de una señal PAL o NTSC, con un tamaño de imagen de 756 x 578 pixels. Además, la información de audio, permite hasta cinco canales simultáneos estéreo en Dolby Digital AC-3.

El MPEG-2 tiene un ancho de banda de hasta 40 Mbits por segundo, mayor que el MPEG original. Puede trabajar con modos de vídeo entrelazado y permite un mayor abanico de tamaños de cuadro, incluida la televisión de alta definición (HDTV, High Definition TV).
El MPEG-2 soporta dos métodos de barrido: el barrido progresivo y el barrido entrelazado. El progresivo recorre todas las líneas de la pantalla consecutivamente, mientras que el barrido entrelazado recorre primero las líneas pares y posteriormente las impares.

MPEG-4
Aunque el MPEG-2 todavía no ha llegado a un pleno aprovechamiento, actualmente el estándar más desarrollado es el MPEG-4, considerado como una reformulación de su implementación más conocida, denominada DivX, que permite comprimir vídeo de alta calidad en muy poco espacio. Este estándar MPEG-4 se presentaba públicamente en 1998. Su nombre oficial como estándar internacional es ISO/IEC 14496. Este formato no se limita a la reproducción de vídeo, sino que también se aplica a los videojuegos y desarrollos multimedia avanzados. Soporta varios canales de audio y varios de vídeo, así como objetos 2D y 3D.

El MPEG-4 trata de agrupar los formatos existentes, más que crear un nuevo formato. Sería una especie de formato de formatos, un meta-formato. El MPEG-4 nos permite, por ejemplo, combinar imagen y sonido real con imagen y sonido sintético mediante una descripción suministrada con un lenguaje adecuado. Además, el MPEG-4 define la forma en que debe transmitirse y sincronizarse el envío de esta información. Finalmente, gestiona la identificación de los objetos multimedia que contiene para hacer respetar las leyes de propiedad intelectual, controlando en todo momento si se tiene permiso para decodificar el contenido de un archivo MPEG-4.

Las prestaciones de una tarjeta gráfica
Las tarjetas gráficas hoy se han convertido en una pieza más para descargar de trabajo al procesador. El resultado final del montaje de una tarjeta gráfica, puede agilizar el sistema si hemos acertado en su elección, o puede no justificar su gasto si no elegimos bien.

El primer paso a la hora de elegir una tarjeta gráfica es saber el uso que el sistema va a hacer de ella. En el caso de un sistema que se emplee para tareas de edición de textos y ofimática en general, la elección pasa por una tarjeta gráfica capaz de mover grandes cantidades de datos, con memoria suficiente para dar una profundidad de color grande y una alta resolución. En definitiva una tarjeta 2D con al menos 16 Mb de memoria gráfica de alta velocidad.

Si el sistema se va a utilizar para visualización de vídeo y aplicaciones multimedia, la elección correcta sería una tarjeta con decodificador MPEG, con un mínimo de 32 Mb de memoria gráfica, lo que nos daría resolución y profundidad de color suficiente.

Por ultimo, un sistema que se utilice para la visualización de 3D (topografía, arquitectura, etc.) necesitará una tarjeta con un procesador 3D y gran cantidad de memoria para las texturas que se van aplicar a los polígonos de 64 Mb en adelante.

No hay comentarios:

Publicar un comentario

Dejar Comentarios