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: 1758 veces, 2 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

14 Respuestas to “JOGL: Java y OpenGL, una dosis de 3D”

  1. oye una pregunta podrias pasar por ahi un tutorial de como usar las funciones y como son, porque el codigo no cambia mucho pero la estructura del archivo principal si y me queda esa duda, de como se compone la estructura en java y como empezar.

  2. @graphics:
    Por su pollo, dame unos dias y subo unos ejemplos con JOGL para 2D y 3D, ok? De hecho en lo personal me interesa la idea de combinar Swing (o cualquier otra libreria para GUI’s) con JOGL; imaginate un menu con efectos 3D :D O para programas que usan graficas resultaria genial.

    Saludos!!!

  3. aun sigo esperando que me pases los tutos, no se te haya olvidado. esque tengo un proyecto y quiero saber como manejar los eventos y cosas asi

  4. @Graphics:
    En verdad estoy apenado, es que he andado un poco liado en el trabajo, pero para no atrasarte que te parece si te mando a tu correo el manual de OpenGL que tengo, asi puedes ir checando la sintaxis. Te parece?

    Si aun asi de plano no le entiendes, entonces ya checamos un ejemplo en particular pero con mas tiempo.

    Saludos!!!

  5. @Graphics

    Espero te sirva la siguiente Pagina:
    The Red Book Examples using JOGL

    Vienen todos los ejemplos de OpenGL y C pero hechos con JOGL y obviamente Java; hay encontraras todo lo que necesitas.

    Saludos!!!

  6. por favor mandame el manual de JOGL;
    lo necesito….

  7. @Plutarco:

    Ya revisaste el enlace que puse en un comentario anterior al tuyo?

    Vienen todos los ejemplos de OpenGL en C pero con Java (JOGL). Seguro que te sirve.

  8. oye yo el red book no se ve ni el online ni el pdf no lo podrias publicar o enviar a algun correo

  9. @Graphics:

    Mira hagamos esto, para la siguiente semana sin falta pondré unos ejemplos que estoy casi seguro te serán de utilidad, pero en el dado caso de que aun siga siendo insuficiente me pondré a buscar en mi eBookteca y te mando los libros de OpenGL, aunque debo de decirte que todos están en ingles, ok?

  10. sale me parece ñperfecto lo de ingles es lo de menos

  11. @todos:

    En vista de que aun no saco mis pendientes, les dejo algunas paginas con documentacion para OpenGL, la cual es facilmente aplicable a JOGL

    http://www.glprogramming.com/red/index.html
    http://www.elmindreda.org/opengl/

    Si tienen una duda, que sea especifica asi me seria mas sencillo contestarla.

    Saludos!!!

  12. Seraphinux:

    HOLA SOY UN USUARIO NUEVO DE OGL EN REALIDAD ESTE ES MI PRIMER CONTACTO CON LAS LIBRERIAS DE JOGL Y DEBO DECIRTE QUE TU EXPLICACION FUE DE GRAN AYUDA

    MUCHAS GRACIAS

  13. @Hector:

    Es un placer saber que te fue de utilidad :P, aprovechando el comentario, podría preguntarte ¿que estas desarrollando con JOGL?

    Saludos!!!

  14. Es solo un trabajo de clase que consiste en transladar, cambiar de tamaño y rotar algun objeto en este caso el triangulo del ejemplo

Dejanos un comentario.