Siempre había tenido curiosidad por la programación gráfica en las tres dimensiones, pero los comentarios de la gente que me hablaba de ello hacían que decidiera aplazar mi inmersión en el tema e incluso olvidarme de ello. Curiosamente todos esos comentarios coincidían en que tanto OpenGL como DirectX eran APIs difíciles de aprender y para las que había que tener un conocimiento muy fuerte de las matemáticas.

Pues bien, os diré que todo depende de lo que quieras hacer. Mostrar una simple figura geométrica y rotarla es muy sencillo. Pero si ya quieres desplegar mallas más complejas, con texturas, mapas de normales y especulares, iluminación y cámara, el asunto se torna un poco más complicado y laborioso. Pero si bien es cierto que tanto OpenGL como DirectX pueden asustar con sólo echar un pequeño vistazo a la documentación o a algún ejemplo de cierto calado, realmente, para hacer cosas básicas (y no tan básicas) lo más importante no es conocer dichas APIs, sino los conceptos, su funcionamiento interno, y tener una pequeña base de álgebra lineal y física. Después, el aprender una u otra biblioteca a un nivel que te permita hacer algo curioso se hace inmensamente más llevadero.

Comencé a estudiar OpenGL, ya que Android e iOS lo utilizan, y, ya que me ponía a aprender algo, debía valorar qué usos y aplicaciones prácticas poder darle de cara a un posible futuro profesional (el desarrollo para dispositivos móviles lleva tiempo en pleno boom). Pero una oferta de trabajo interesante como programador de videojuegos para Windows me hizo interrumpir mis avances con OpenGL y pasarme a DirectX con la finalidad de crear una aplicación 3D que me sirviera de muestra, tal y como pedían en la oferta. Así pues en más o menos un mes conseguí hacer esto:

La aplicación hace uso de la biblioteca libre Assimp para la carga de los modelos y escenarios, de DirectX 9.0c para el trabajo sucio y de los shaders para el renderizado final, concepto que también se me tornaba oscuro hasta hace poco (¡lo importante que es hacerse con un buen libro!).

Aún me queda mucho por aprender; La programación gráfica es un océano de técnicas, conceptos y conocimientos multidisciplinares. Pero la parte más complicada, que es empezar y asentar los conocimientos fundamentales y más comunes, ya está conseguida.