|
|
|
Autor |
|
|
Ámbito |
Opinión / Iniciación a DirectX |
|
Lenguaje de Programación |
Ninguno (no contiene código) |
|
Fecha |
2000/12/13 |
| Índice
I - Como comenzo todo. I - Como comenzo todo. Desde que comenze a programar hace mas tiempo del que me gusta recordar (Basic en MSX), siempre he tenido como meta hacer un videojuego, y siempre me he acercado lo suficiente a cumplir ese sueño como para sentir un; "esta vez por fin lo lograre!". Sin embargo, aqui sigo. Con la firme convicción de que "esta vez por fin lo lograre!", sin haberlo logrado todavia. Mi relación con DirectX comenzo en el caluroso verano de 1998. Debido a la más que evidente extinción de MS-DOS me vi obligado a migrar de sistema operativo y de entorno de programación (Borland Pascal). Debido a la gran expansión de Windows, me decidi por probar con este "S.O", usando como herramienta de desarrollo el Delphi 2.0. De este modo, conforme iba aprendiendo Delphi con los tipicos programitas que se suelen hacer, comenze a programar DirectX. Aunque siendo un perfecto novato en la programación bajo Win32, y en el modelo de programación orientada a objetos; al final me las apañe (no se todavia como), para hacer un programa que cargaba modelos 3D (de 1 solo material, sin texturas y sin z-buffer) y permitia rotarlos y moverlos por la pantalla. Desafortunadamente, la existencia de un maldito Bug que jamas logre encontrar y otras circunstancias me obligaron a retrasar mi proyecto de hacer un videojuego con DX. Comenze con DirectX 3 para acabar haciendo el comentado programa bajo DirectX 5. Aproximadamente, dos años despues, es decir en este año 2000 que acaba, y despues de haber mejorado considerablemente mis conocimientos en Delphi y de programación orientada a objetos (aunque todavia suelo trabajar de forma mas cercana al modelo tradicional, que al de objetos) volvi a proponerme la incursión en la programación de DirectX, esta vez en su versión 6. El trabajo con la versión 6, solo resulto un ensayo/precalentamiento y no llego muy lejos ya que al mes, mas o menos, volvi a empezar pero con DirectX 7. Esta vez, las cosas fueron mucho mejor; consegui hacer mis pinitos con DirectDraw, DirectInput, DirectMusic, DirectSound (con sonido 3D y todo), y con Direct3D (esta vez consegui z-buffer, texturas, filtro bilineal, efectos de transparencias,.... es decir, un motor 3D simple pero "decente" y que cumplia todas las necesidades del proyecto que todavia tengo en mente). Recientemente me he iniciado en DirectX 8, el cual a mi modo de ver, presenta mejoras muy interesantes en los aspectos de música y sonido, pero que cuenta con importantes escollos en la parte grafica, ya que se ha eliminado el DirectDraw (aunque todavia se puede usar el interfaz del DirectX7) y la mayoria de las mejoras en 3D requieren de hardware de última generación (id diciendole adios a vuestras "desfasadas" voodoo 2, y tarjetas de la misma generación...), y por si fuera poco la emulación por software supone una lentitud extrema, hasta el punto de inservible en muchos de los casos. Eso si, las nuevas "pijaditas" 3D tienen un aspecto prometedor.
II - Un vistazo a la evolución de la arquitectura de DirectX. Sin pretender ser muy riguroso, desde hace tiempo DirectX venia estando formado por los siguientes elementos;
Actualemente (DirectX 8) las cosas estan asi;
III - Mis inquietudes actuales y mi modelo actual de DirectX. Actualmente, trabajo en uno de los videojuegos menos ambiciosos que me he planteado, y por lo tanto creo que por fin podre decir que he terminado un videojuego, si bien se trata mas de un ensayo que de un videojuego. En realidad el proyecto nacio de una doble intención; I - Probar a usar la nueva version de DirectMusic (DX8) para todo lo relacionado con los sonidos (en lugar de usar DirectSound) y de usar DirectShow (DX8) para todo lo relacionado con la música. Lo primero se debe a que DirectMusic, a diferencia de DirecSound, dispone de un interfaz (IDirectMusicLoader) que permite cargar archivos de sonido (WAVs comprimidos o sin comprimir) de forma muy sencilla. Mientras que con DirectSound, el cargar los archivos de sonido era trabajo del programador; por lo que el cargar archivos WAV descomprimidos (PCM) resultaba mas o menos sencillo, pero para usar WAVs comprimidos se solia usar el ACM (Audio Compression Manager), complicando la cosa de forma innecesaria (especialmente ahora que la nueva versión de DirectMusic se encarga de usar el ACM por nosotros). Y lo segundo se debe a que DirectShow puede reproducir música en numerosos formatos de audio (como por ejemplo MP3), mientras que DirectMusic solo soporta WAV, MIDI y los "MODs" de Microsoft. Si bien, al final el juego en proyecto usara música MIDI con fin de reducir considerablemente su tamaño y facilitar su distribución (aunque internamente esta preparado para MP3 y todos los formatos de audio soportados por DirectShow). II - Probar la posibilidad de usar DX7 para la parte de graficos y DX8 para el resto. Quedando el módelo de DirectX que uso para dicho proyecto del siguiente modo:
|