JOGL: Java y OpenGL, una dosis de 3D

July 17th, 2008 | by Seraphinux |

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.

Tags: , , , ,

  1. 16 Responses to “JOGL: Java y OpenGL, una dosis de 3D”

  2. By graphics on Aug 23, 2008 | Reply

    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.

  3. By Seraphinux on Aug 25, 2008 | Reply

    @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!!!

  4. By graphics on Sep 2, 2008 | Reply

    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

  5. By Seraphinux on Sep 2, 2008 | Reply

    @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!!!

  6. By Seraphinux on Sep 2, 2008 | Reply

    @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!!!

  7. By Plutarco on Sep 8, 2008 | Reply

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

  8. By Seraphinux on Sep 8, 2008 | Reply

    @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.

  9. By graphics on Sep 12, 2008 | Reply

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

  10. By Seraphinux on Sep 12, 2008 | Reply

    @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?

  11. By graphics on Sep 13, 2008 | Reply

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

  12. By Seraphinux on Sep 17, 2008 | Reply

    @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!!!

  13. By Hector on Oct 21, 2008 | Reply

    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

  14. By Seraphinux on Oct 21, 2008 | Reply

    @Hector:

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

    Saludos!!!

  15. By Hector on Oct 22, 2008 | Reply

    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

  16. By josue on Feb 24, 2009 | Reply

    PUES SOLO KISIERA SABES SI HAY MANERA DE K SUBAS O ME PASES UN TUTORIAL DE OPENGL PARA C++, DIGO SI NO ES MUCHA MOLESTIA XD, Y TAMBIEN KISIERA SABER SI LA INSTALACION DEL JOPG SE PUEDE HACER EN EL NET BEANS 6.0 POR K ES EL K TENO Y ME MARCA PROBLEMAS EN LA INSTALACION XD BUENO DE ANTEMANO GRASIAS Y SALUDOS

  17. By Pichichi on May 22, 2009 | Reply

    HOLA, DECIR TAMBIEN QUE SOY UN USUARIO NUEVO EN ESTO DE OPENGL Y MAS O MENOS HE COGIDO UNA IDEA DE COMO HACER LO QUE HABLAN AL PRINCIPIO, PERO LA VERDAD ES QUE NECESITO AYUDA CON UN TRABAJO QUE TENGO QUE HACER, YA LES DIJE SOY NUEVO Y NO SE CASI NADA DE OPENGL.  TENGO QUE HACER UN TRABAJO DE OPENGL CON JAVA, CONSISTE EN HACER REVOTAR UN CONJUNTO X DE PELOTAS DENTRO DE UNA HABITACION Y TENER EN CUENTA LAS COLICIONES CON LAS PAREDES Y ENTRE LAS MISMAS PELOTAS, Y PODER IR MOVIENDOME POR TODO EL ESCENARIO PARA VERLO DE DIFERENTES ANGULOS.
    SI ALGUIEN PUEDE AYUDARME SE LO AGRADECERIA, ME PUEDE ESCRIBIR A ESTE CORREO: amanresas@estudiantes.uci.cu VALE, ESPERO QUE ALGUIEN ME ESCRIBA….
    SALU2S

Post a Comment