3.20.2006

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.

3 comentarios:

Diego Calleja dijo...

Curioso, opengl-es es lo que jon smirl proponia para desarrollar xegl en x.org

AgeR dijo...

Aunque la calidad gráfica no sea lo importante en este tipo de aplicaciones, podrías pedir a algún grafo que saque un rato y te haga un tractor en condiciones :P

La verdad es que me ha sorprendido mucho la cantidad de móviles, en especial los Motorola, que llevan el chip de ATI. Estoy convencido de que los móviles y PDA van a ser lo mismo en el futuro. Y también estoy convencido e que el J2ME tiene sus días contados en favor del C++. Creo que la pugna Windows/Linux se trasladará también a los móviles, y con ella, la de DirectX/OpenGL.

javi dijo...

@ager: el tractor debe ser así, por muchas razones, la principal porque de esta forma sirve de guía durante el trabajo, otra es que no puedo usar bitmaps debido a que no tengo suficiente máquina y la más importante y última es que es preferible no usar trabajo de terceros. Ya me han ofrecido hacer unos iconos y tal, pero prefiero que quede así.

Una vez que esté funcionando lo pensaré y seguramente lo haga, pero por ahora no.