Seraphinux
“Lloramos por el lamento de un pájaro pero no por la sangre de un pez, benditos aquellos que tienen voz.”
July 17th, 2008
Visitada: 183 veces, 3 en este dia.

JOGL: Java y OpenGL, una dosis de 3D

Con eso de que Google lanzo Libely y actualmente el tema del 3D, los mundo virtuales y todo eso esta de moda (hace unos dias termine de leer Snow Crash :D ) me dije a mi mismo -Mi mismo aprovechemos para hacer una entrada sobre programacion en 3D.

Me puse apensar ¿Programacion en 3D? ¿sobre que sera bueno? ¿DirectX y C#? Nel, ya estoy hasta la madre de C#y .NET, entonces ¿de que sera bueno?… -Ya se, sobre OpenGL. Me dije a mi mismo, pero OpenGL con C es todo un pancho (ni tanto :D ), asi que como estoy hasta la madre de C#, entonces ¿Por que no hacerlo con Java? Asi que despues de todo el anterior soliloquio me dispuse a investigar como usar OpenGL con Java, y entonces me encontre con JOGL.

Antes de iniciar debo de comentarte que usar OpenGL con C o con Java no es muy diferente, te preguntaras ¿entonces como funciona?

La API OpenGL, escrita en C, es llamada por JOGL gracias a la Java Native Interface (JNI). Por tanto, el sistema en el que se está programando debe tener soporte para OpenGL para que pueda funcionar JOGL correctamente. JOGL se diferencia de otras bibliotecas Java para OpenGL en que simplemente expone las funciones de la OpenGL, basadas en un lenguaje procedural (lenguaje C), por medio de métodos contenidos en unas pocas clases, en lugar de intentar realizar un mapeo completo del código OpenGL para transformarlo y adaptarlo al paradigma de orientación a objetos. De hecho, la mayoría del código de JOGL está en realidad autogenerado a partir de las cabeceras de las librerías C de OpenGL, mediante una herramienta llamada Gluegen, que fue programada específicamente para dicho propósito.

Hasta hay todo genial, pero hay otro pequeño detalle… Sí, estoy seguro que ya sabes a que me refiero… la velocidad, exacto los lenguajes interpretados como Java o los basados en .NET no son muy rapidos que digamos, no quiero decir que sean tortugas, pero admitamoslo para trabajos de este tipo no hay mejor que C, pero no te preocupes, tampoco vamos a hacer un Second Life en Java.

Asi que una vez expuesto lo anterior podemos empezar. Al final de esta entrada tendremos una aplicacion que lucira de la siguiente forma, toma en cuenta que solo sera un pre-intro.

JOGL: Demo

Como ves no es la gran cosa, pero es un buen inicio… Para este ejemplo usaremos Netbeans (en mi caso la version 6.1) Primeramente descargamos un paquete que incluye el plugin que nos permitira usar JOGL ademas de que incluye demos para que podamos estudiar por nuestra parte. Podemos descargarlo del siguiente enlace [Netbeans OpenGL Pack].

JOGL: Netbeans Pack

Una vez que lo descargamos pasamos a descomprimirlo, posteriormente abrimos nuestro Netbeans y vamos a los plugins (Tools > Plugins) Una vez en la ventana nos vamos a la pestaña Downloaded y damos click en el boton Add Plugins… Y en la ventana que aparece nos transladamos a la carpeta que descomprimimos (La del paquete del JOGL) y seleccionamos TODOS los archivos y le damos Abrir, despues de esto nos apareceran todos los plugins que conforman JOGL, los instalamos.

JOGL: Plugins

Una vez instalados ya estamos listos para usar JOGL. Ahora creamos un proyecto nuevo con nuestro netbeans; como puedes apreciar nos aparece una nueva categoria OpenGL, ademas de algunos Demos para entretenernos, en nuestro caso en particular creamos una aplicacion Simple JOGL.

JOGL: New Project

En la siguiente ventana le ponemos un nombre a nuestro proyecto, algo interesante en esta ventana es el hecho de que podemos elejir en que plataforma sera DESARROLLADA nuestra aplicacion. Posteriormente podremos generar un proyecto para cada una de las plataformas.

JOGL: Plataformas

Esto nos generara un esqueleto para nuestra aplicacion. Si precionas [F6] veras que genera el programa que mostramos al inicio de este post. De momento no vamos a modificarlo, solo quiero que notes algunas cosas, primeramente nota que implementamos de GLEventListener y por tanto tenemos que definir 4 funciones las cuales son:

JOGL: Funciones

Las cuales si conoces OpenGL sabras que son basicas en cualquier aplicacion OpenGL, sea esta hecha en C, Java, C#, etc. Otro detalle interesante es el nombre de las funciones y de las variables, como podras notar son las misma que si estuvieramos programando en C. Como muestra mira el codigo usado en JOGL y un codigo en C

JOGL: Codigo

Que quiero decir con todo esto, que si ya tienes algo de conocimiento en OpenGL entonces no te sera muy dificil usarlo con Java y si no tienes ni idea entonces podras usar cualquier tutorial sobre OpenGL sea este para C, C++, C#, etc.. ya que el codigo es de lo mas parecido. Tal como mencione al principio esto solo es un acercamiento a JOGL, asi que si te interesa algo mas sobre JOGL no dudes en ponerlo en los comentarios.

Antes de que se me pase, miestras estes ejecutando tu programa preciona Ctrl+Alt+Spr (Windows) o en consola ejecuta top (linux) y ve cuantos recursos se come esta sencilla aplicacion :P Obviamente no podras crear un World of the Warcraft o un Second Life con JOGL pero si le das un vistazo a la pagina del proyecto veras que se usa en muchos lugares.

Por cierto, es posible usar Swing con JOGL, siiiiii tal como lo oyes, puedes crear unas super interfaces de fantasia usando swing y JOGL, de hecho si buscas un rato en Google veras que ya hay gente lo que hizo. De momento hasta aqui le dejamos y en proximas entradas veremos que mas podemos hacer con JOGL.

Posts Relacionados

Dejanos un comentario.