javisantana.com

OpenglES

En mi PFC he usado OpenGLES para el render de los elementos en pantalla. Para el que no lo sepa, OpenGLES es una especificación de OpenGL para dispositivos embebidos (su propio nombre lo indica, OpenGL for Embedded Systems) y que permite hacer muchas de las cosas que hasta hace poco estabamos haciendo en PC, un poco antes de que llegaran los shaders, esto es, renderizando polígonos con texturas e iluminación :). Precisamente hace poco se ha anunciado OpenglES 2.0, un poco pronto a mi modo de ver, sobretodo porque apenas hay dispositivos que soporten OpenGLES1.1 por hardware.

Como decía, he usado OpenglES por varias razones: la primera de ellas ha sido por simplicidad, no me apetecía empezar a programarme un render por software para pocketpc y ninguno de los que vi me agradaron lo suficiente. La segunda y definitiva fue su rapidez, un buen amigo de mi época de IRC me comentó que él lo había usado para un concurso, el que por cierto ganó en la categoría de juegos.

Recientemente ATI ha sacao un chipset denominado Imageon (ver foto de juego corriendo sobre el)que soporta aceleración por hardware y, la verdad, me ha sorprendido mucho ver la cantidad de móviles que lo incorporan frente al número de PDA, apenas 5. En uno de los blogs que leo a través de planetacodigo, leo que el blogger en cuestión se va a comprar una PDA y que ha elegido una DELL axim 51v. Mirando las caracterísiticas y el precio, y comparándolas con los precios actuales, resulta que es un pedazo de cañon que, lógicamente, tiene aceleración por HW de gráficos 3D.

Predecir el futuro no es lo mío, pero viendo cómo está el percal de las últimas portátiles, con un 3D avanzado, es posible que de aquí a poco tiempo empecemos a ver juegos 3D en móviles o PDA’s y OpenGLES es una de las pocas opciones, y a mi modo de ver, una de las mejores. Lo interesante del tema es que apenas se modifica la forma en la que se programa para PC, lo poco que varía es que no hay glBegin/glEnd, solo vertex arrays, lo cual no es un problema, hay que usar fixed point debido a que los ppc no soportan punto flotante por hardware (aunque sí que lo emulan), con la peculiaridad de que tenemos nuevas funciones conocidas con parámetros de entrada en punto fijo, por ejemplo glScalex en vez de glScalef (aunque esta también se puede usar), y que algunas funciones desaparacen, por ejemplo glLineWidth, lo cual tampoco es gran problema.

Como referencia, se pueden seguir los tutoriales de Jacobo (descarga directa 6 megas), los tutoriales de grant games (online) y como no, la referencia en su web oficial. Un par de detalles para terminar, en los dos tutoriales te indican lo que tienes que hacer para poderlo compilar y si no tienes un dispositivo a mano hay versión de OpenglES para el emulador que viene con el entorno de desarrollo, del que puedes ver un screenshot en mi página de flickr.