Siguiendo con la serie de artículos dedicados a librerías para programación de videojuegos, que iniciamos con este artículo sobre OpenGL, esta vez le toca el turno a DirectX, las famosas librerías de Microsoft.
Historia
En la época de los inicios de Windows, antes del 95, cuando los juegos se ejecutaban en MS-DOS, los desarrolladores de videojuegos debían programar la detección y acceso a los sistemas hardware que tenía el ordenador a través del sistema operativo. Ese hardware eran las tarjetas gráficas y de sonido y periféricos, como el ratón, teclado y joystick. Por aquel entonces, se utilizaba el estándar de la asociación VESA para las tarjeta gráficas, y como estándar de sonido se utilizaban las librerías de Sound Blaster de Creative.
Pero con el tiempo comenzaron a multiplicarse el número de tarjetas gráficas y de sonido, a la vez que diferentes joysticks, ratones, etc. Los desarrolladores veían como se empezaba a complicar y alargar la programación para abarcar todos los tipos de hardware que salían al mercado.
En los sistemas Windows, el acceso directo al hardware estaba protegido por el sistema operativo, por lo que el acceso a tarjetas gráficas y de sonido era lento e ineficaz. Para resolver esto surgió DirectX para Windows95.
DirectX es una librería que está por encima del hardware y que se utiliza comúnmente para el desarrollo de videojuegos. El sistema operativo permite a DirectX el acceso al hardware eficientemente. Así, el desarrollador del videojuego sólo programa contra las liberías de DirectX, y es el propio DirectX el que pasa la información a los drivers del hardware correspondiente de una manera rápida y eficaz.
En noviembre de 1994, tres amigos llamados Eisler, Alex St. John y Eric Engstrom, se plantearon convertir a Windows95 una plataforma en la que los juegos pudieran acceder a las altas prestaciones de las tarjetas gráficas. Los tres desarrollaron en un tiempo crítico, unos 5-6 meses, un SDK para Windows95 para el desarrollo de juegos. Podéis leer la historia de creación y evolución de DirectX en el blog de Eisler
|
Versión
DirectX
|
Sistema
Operativo
|
Fecha
Lanzamiento
|
|
DirectX
1.0
|
|
30
septiembre 1995
|
|
DirectX
2.0/2.0a
|
Windows
95
OSR2 y NT 4.0
|
5
junio 1996
|
|
DirectX
3.0/3.0a
|
Windows
NT
4.0 SP3 Última versión para Windows NT 4.0
|
15
septiembre 1996
|
|
DirectX
4.0
|
Nunca
se lanzó
|
|
|
DirectX
5.0
|
Disponible
como beta para Windows NT 5.0 que se intala en Windows NT 4.0
|
16
julio 1997
|
|
DirectX
5.1
|
|
1
diciembre 1997
|
|
DirectX
5.2
|
DirectX
5.2 para Windows
95
|
5
mayo 1998
|
|
DirectX
5.2
|
Windows
98
|
5
mayo 1998
|
|
DirectX
6.0
|
Windows
CE
para la Dreamcast
|
7
agosto 1998
|
|
DirectX
6.1
|
Windows
98 SE Última
versión para Windows NT 4.0
|
3
febrero 1999
|
|
DirectX
7.0
|
Windows
2000
|
22
septiembre 1999
|
|
DirectX
7.0a
|
|
1999
|
|
DirectX
7.1
|
Windows
ME
|
16
septiembre 1999
|
|
DirectX
8.0 (RC0)
|
|
30
septiembre 2000
|
|
DirectX
8.0 (RC14)
|
Xbox
|
3
noviembre 2000
|
|
DirectX
8.0a (RC14)
|
Última
versión para Windows 95
|
7
noviembre 2000
|
|
DirectX
8.1 (RC7)
|
Windows
XP
|
12
noviembre 2001
|
|
DirectX
9.0
|
Windows
Server 2003
|
19
diciembre 2002
|
|
DirectX
9.0a
|
|
26
marzo 2003
|
|
DirectX
9.0b (RC2)
|
|
13
agosto 2003
|
|
DirectX
9.0c (RC0)
|
Windows
XP SP2, Windows Server 2003 SP1, y Xbox
360.
|
13
diciembre 2004
|
|
DirectX
9.0c
|
Compatible
con todas las versiones de Windows en las que DirectX 9.0C (RC0)
era compatible
Primera
inclusion de las DLLs D3DX
|
9
diciembre 2005
|
|
DirectX
9.0c
|
Las
versiones de diciembre de 2005 y febrero de 2006 añaden el
formato XML a algunas clases.
|
Agosto
2005, con actualizaciones bimensuales
|
|
DirectX
10.0
|
Exclusivo
para Windows
Vista
|
30
noviembre 2006
|
APIs de DirectX
Al existir distintos tipos de hardware y periféricos se desarrollaron varios API's para tratarlos, en su conjunto forman DirectX:
DirectX Graphics: Gráficos. Consta de:
- DirectDraw: Para gráficos 2D, aunque muy poco usado.
- Direct3D: Para gráficos 3D, esta es la ¨competencia¨ de OpenGL.
DirectInput: Para entrada de datos de teclados, ratones, joysticks, pads.
DirectPlay: Para comunicación en red.
DirectSound: Para la reproducción y grabación de sonido. Consta de :
-Direct3DSound: Sonido 3D
DirectMusic: Para reproducir sonidos y música en tiempo real.
DirectXMedia: Compuesto de DirectAnimation, DirectShow, DirectX Video Acceleration, Direct3D Retained Mode y DirectX Transform for animation.
DirectXMedia Objects: Soporte para streaming como codificadores, descodificadores y efectos.
Varios de estos elementos arriba listados se crearon a lo largo de las versiones de DirectX. En DirectX 10 ha habido muchos cambios, ya que se pretende una fusión/sustitución con el API de desarrollo de la XBox. Por ejemplo DirectInput se abandona y es sustituida por XInput (API de XBox), DirectPlay por XBox Live, DirectShow por MediaFoundation, DirectSound por XACT.
Las APIs que están más relacionadas con el mundo de los videojuegos son:
- Direct3D: Para la representación en 3D y el uso de aceleración por hardware.
- DirectInput: Para la gestión de entrada de datos por parte del usuario: Teclado, ratón, joystick, pad, etc.
- Direct3DSound: Para el sonido 3D de los juegos.
- DirectShow: Para la reproducción de videos.
Me gustaría destacar que Direct3D es la que se encarga de la representación 3D. Es decir, es la parte de DirectX que trata con la tarjeta gráfica y su aceleración. Direct3D es la competencia, por así decirlo, de OpenGL. Mucha gente confunde erróneamente DirectX con Direct3D, y compara DirectX directamente con OpenGL.
La última versión de DirectX es DirectX 10, y viene con Windows Vista, se iba a llamar Windows Graphics Foundation, pero al final se decidió continuar con el número de versiones de DirectX. Como nota curiosa es que Microsoft ha apostado por usar la aceleración 3D para su interfaz gráfica Aero, opción disponibles en las versiones más completas de Windows Vista. Podéis leer más en este artículo sobre Windows Vista y DirectX 10
DirectX instala una herramienta llamada DirectX Diagnostic que analiza y muestra las librerías instaladas de DirectX y también permite hacer pruebas de video, sonido y música. Para ejecutarla solo tenéis que ir a inicio, pulsar sobre ejecutar y escribir dxdiag. Con esto os saldrá la pantalla principal de esta herramienta de diagnóstico, donde podréis ver la versión instalada y si hay algún problema de compatibilidad.
A los juegos que hagan uso intensivo de las nuevas y flamantes DirectX 10 aun les queda bastante para salir a la luz. Además, el hardware que soporta DirectX10, todavía es muy caro para un comprador de calle. Aún así podéis ver en la siguiente lista los juegos que están preparando para DirectX 10 y otros que han preparado parches de actualización para poder jugar con DirectX10.
lightman
|