Download JAVA OPEN GL

Document related concepts
no text concepts found
Transcript
(JOGL)
JAVA OPENGL
INTRODUCCIÓN


Java OpenGL (JOGL) es una biblioteca que permite
acceder a OpenGL mediante programación en Java.
Actualmente está siendo desarrollado por el Game
Technology Group de Sun Microsystems, y es la
implementación de referencia para JSR-231 (Java
Bindigs for OpenGL).
JOGL permite acceder a la mayoría de características
disponibles para los programadores de C, con la
excepción de las llamadas a ventanas realizadas en
GLUT (ya que Java contiene sus propios sistemas de
ventanas, AWT y Swing), y algunas extensiones de
OpenGL.
DISEÑO


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.
DISEÑO

Esta decisión en el diseño tiene sus ventajas y
sus desventajas. La naturaleza procedural y de
máquina de estados de OpenGL es
inconsistente con la forma habitual de
programar en Java, lo cual puede dejar
perplejos a muchos programadores. Sin
embargo, la conversión directa realizada de las
funciones OpenGL a métodos Java, permite la
conversión del código de aplicaciones C ya
existentes mucho más simple.
FUNCIONAMIENTO

Las clases que se involucran en el funcionamiento de JOGL
son las siguientes:
GLDrawable
GLCanvas
GLJPanel
GLCapabilities
GLDrawableFactory

Estas son la interfaz básica que está en el mundo de los
gráficos. En esta parate hay que recordar que un
inconveniente de trabajar con OpenGL es que el sistema de
ventanas se lleva con GLUT, por lo que es homologo a C,
entonces para JOGL tenemos AWT y Swing.
FUNCIONAMIENTO

Event Listener-Model: Este es el modelo que utiliza Java
para responder a las acciones del usuario. A veces se
utiliza hilo de comunicación dentro de programas. A
veces no son eventos generados por el usuario en
absoluto. Dentro de este modelo, el GLEventListener,
nos proporciona el Listener de java, como medio de
comunicación en el momento de que se quiera
empezara dibujar.

GLDrawable es una interface. Todos los dibujos de
JOGL de OpenGL drawing pasaran en GLDrawables.
FUNCIONAMIENTO

GLCanvas y GLJPanel ambas son clases que
implementa GLDrawable. Tanto como en el
programa esten involucrados todo el
GLCanvases y todo el GLJPanels no habra
problemas enla ejecución de los programas.
Este es el polimorfismo. El GLDrawables
empezara a pasar con el GLEventListeners.
FUNCIONAMIENTO

El
diagrama
siguiente
muestra
el
funcionamiento en un diagrama UML de JOGL,
donde se observa como se mezclan las
distintas clases que se mostraron en el
funcionamiento del JOGL
IMPLEMENTACIÓN


1. Inicie NetBeans y entre en el menu Tools|Plugins.
2. Presione el botón add y elija la opción Downloaded
plugins list y presione Install.
IMPLEMENTACIÓN

3. Vaya a la pestaña de Settings y asegúrese
de que el centro de actualizaciones este
habilitado.
IMPLEMENTACIÓN


4. Cambie a la pestaña de Available Plugins, busque OpenGL
y verifique que se encuentran todos los paquetes que se
quieren instalar.
5. Finalice la instalación presionando Install.
IMPLEMENTACIÓN
CLASES Y MÉTODOS
Clase GLUT
Constructor:
public GLUT()
Métodos:
public void glutWireSphere(double radius, int slices, int stacks)
public void glutSolidSphere(double radius, int slices, int stacks)
public void glutWireCone(double base, double height, int slices, int stacks)
public void glutSolidCone(double base, double height, int slices, int stacks)
public void glutWireCylinder(double radius, double height, int slices, int stacks)
public void glutSolidCylinder(double radius, double height, int slices, int stacks)
public void glutWireCube(float size)
public void glutSolidCube(float size)
public void glutWireTorus(double innerRadius, double outerRadius, int nsides, int rings)
public void glutSolidTorus(double innerRadius, double outerRadius, int nsides, int rings)
CLASES Y MÉTODOS
Clase GLU
Constructor:
public GLU()
Métodos:
gluNewQuadric()
gluLookAt(double eyeX, double eyeY, double eyeZ, double centerX, double centerY, double
centerZ, double upX, double upY, double upZ)
gluCylinder(GLUquadric quad, double base, double top, double height, int slices, int stacks)
EJEMPLO

Este programa dibuja una pirámide 3D
mediante JOGL.