Empecé utilizando GLUT, ya que tiene una enorme base de ejemplos desde los que partir. Pronto me encontré con un inconveniente: yo programo normalmente esta clase de aplicaciones en C++, pero GLUT fue diseñada para utilizarse con C y, por desgracia, algunas de sus callbacks tienen el prototipo void callBack(void). Esto me hacía imposible esconder a this y me obligaba a utilizar un punto de acceso central, probablemente un singleton (ahora que lo pienso mejor, podría haber implementado alguna clase de dispatcher pero, como verán, no era realmente necesario).
Al no encontrar dicha "solución" muy satisfactoria (años de propaganda anti-singleton rindiendo frutos), probé con varias adaptaciones o extensiones de GLUT para C++, siendo GLT la que atrajo más mi atención. Sin embargo, carecía notablemente de documentación e involucraba múltiples DLLs.
Me disponía a seguir probando con GLUT pero, al consultar algunos ejemplos de "procedural textures" de Sean O'Neil (lamentablemente su sitio ya no funciona, pero pude encontrar sus ejemplos en The Wayback Machine), me encontré con SDL. Ya había escuchado mencionarla, pero nunca pensé que fuera tan simple de utilizar; en unos minutos tenía corriendo mi primer ejemplo y, a partir de entonces, me convertí totalmente a SDL :-)
Sigue siendo C, pero su sistema de manejo de eventos, paradójicamente basado en un loop explícito al estilo Windows, es fácil de integrar con C++. Además gana en todas las otras áreas, ya que incorpora un control más directo de la resolución de la pantalla y la documentación, si bien breve, es la necesaria para empezar a utilizarla rápidamente.
Cuando siga con mi ejemplo de OpenGL, veré que tan satisfactoria resulta en general...
En otras áreas:
- Tres blogs interesantes:
- el de Herb Sutter, miembro del comité de C++;
- el de Andrew Koenig, otro miembro de dicho comité
- y el de Ysaneya (Flavien Brebion), que está trabajando en un juego con gráficos muy impresionantes.
- Una ilusión óptica.
- Una imagen del datacenter de Internet Archive.
No hay comentarios:
Publicar un comentario