jueves, 23 de septiembre de 2010

DirectX 9

Después de las vacaciones y de poco tiempo libre, debido al encargo de un programa, sigo con mi proyecto. Este post no refleja ningún gran avance, tan solo que sigo en él.

Tengo ordenador nuevo, con un Windows 7, y por ello tuve que migrar todos mis programas. Me pasé al Visual C++ 2010 Express Edition, que también es gratis y con un IDE mas elegante que el clásico Visual.

Lo primero que hice cuando tuve todo migrado y listo fue buscar un buen tutorial de DirectX 9, y encontré uno magnífico de 2 tomos y unas 1000 páginas cada uno, aunque está en inglés. Este tutorial viene con otros 2 tomos de C++ para juegos, también en inglés y también muy bueno, sólo lo usé al principio para refrescarme mis nociones de C++.

Ahora que llevo unas semanas estudiando DirectX 9 me doy cuenta de que un punto importante y además el primero que debo afrontar es el de la inicialización de las DirectX en mi juego, puesto que debo contemplar la posibilidad de ejecución a pantalla completa, o en ventana. Y contemplar cosas como: estando a pantalla completa ¿qué modo gráfico usar? ¿con qué profundidad de color? ¿qué refresco de pantalla usar?, y ejecutándose en ventana, el programa deberá reaccionar correctamente al redimensionado de la ventana. Además tengo que lidiar con cosas como: back buffers, vertex buffers, configuraciones de pixel y otras lindezas. Todas estas opciones deberán ser seleccionadas por el usuario, y el programa debe ser robusto y contemplarlas.

Mi tiempo ahora se centra en seguir estudiando las DirectX 9 y, en la medida de lo posible, ir desarrollando el código del que ya sea capaz. Por ejemplo, ya tengo hecha la rutina que almacena todos los modos a pantalla completa que es capaz de soportar el sistema bajo. Mi siguiente paso es desarrollar una rutina que englobe a la anterior y que además de contemplar todos los modos posibles sea capaz de elegir de forma automática la mejor configuración para ese modo. Luego me meteré con el uso del juego en ventana, puesto que el redimensionado conlleva código extra para tratar el evento.

También he estado curioseando los diferentes ficheros a los que exporta Blender y encontré una página con la definición del formato del tipo de fichero nativo de Blender. De todas formas puesto que aún me faltan conocimientos de DirectX no voy a intentar leer estos ficheros desde mi programa por ahora. A pesar de esto, sigo teniendo al formato .X3D como favorito, por estar en XML y ser claro de interpretar.