CONECTAR JAVA CON OPENGL

Nils Murrugarra Llerena nineil.cs@gmail.com http://inf.unitru.edu.pe/~nineil/ Resumen: En este documento veremos la manera de conectar Java con Opengl (JOGL), veamos a continuación los pasos que debemos realizar:
1. Descargar de http://download.java.net/media/jogl/builds/archive/jsr-2311.1.1-rc4/ el archivo: jogl-1.1.1-rc4-windows-i586.zip

2. Descomprimir y copiar la carpeta lib a D: y cambiar nombre por opengl 3. Crear el proyecto graficos en NetBeans 4. Crear las siguientes clases: a. JavaRenderer
package graficos; import javax.media.opengl.GL; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.glu.GLU; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.media.opengl.GLCanvas; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.awt.Color; public class JavaRenderer extends JPanel implements GLEventListener { public JavaRenderer() { } public void drawSquare(GLAutoDrawable gLDrawable,float x1, float y1, float lado) { final GL gl = gLDrawable.getGL(); gl.glBegin(GL.GL_QUADS); gl.glVertex3f(x1,y1,0); gl.glVertex3f(x1,y1+lado,0); gl.glVertex3f(x1+lado,y1+lado,0); gl.glVertex3f(x1+lado,y1,0); gl.glEnd(); } public void display(GLAutoDrawable gLDrawable) { final GL gl = gLDrawable.getGL(); gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glColor3f(0,128*1/255,1); gl.glLoadIdentity(); this.drawSquare(gLDrawable,-1,-1,1/2.0f); gl.glFlush();

glOrtho(-1. canvas. gl. import javax. panelRender package graficos. boolean deviceChanged) { } public void init(GLAutoDrawable gLDrawable) { final GL gl = gLDrawable. } } b. canvas = new GLCanvas(). import java. import java. import java. this. gl.awt. int height) { } public void reshape(GLAutoDrawable gLDrawable.GL_PROJECTION). gl. import javax.0).setSize(300. gl.GLCanvas.glMatrixMode(GL.glMatrixMode(GL. int y.GREEN).setBorder(BorderFactory.setVisible(true). } } . int x.Frame.getGL().awt.requestFocus(). public panelRender() { this.addGLEventListener(new JavaRenderer()).width. this.GL_MODELVIEW).} public void displayChanged(GLAutoDrawable gLDrawable.1). add(canvas).*. int height) { final GL gl = gLDrawable. public class panelRender extends JPanel { GLCanvas canvas.setSize(300.glClearColor(1.0.awt.300).1. import java. int width.int width.event.-1.1.WindowAdapter.setBackground(Color.glLoadIdentity(). import java. canvas. //this.getGL().height). } public void reshape(GLAutoDrawable gLDrawable.createEtchedBorder()). boolean modeChanged.awt.opengl.Color. gl.WindowEvent. gl.*.swing.awt.media.awt.300).1.1. import java.event.Event. canvas.-1.glViewport(0.*.

this. Añadiendo Librería Añadamos las librerías jogl.c. aplRender. Ahora al realizar la compilación todo sale ok.JFrame { panelRender panelR. drawSquare: Función usada para dibujar un cuadrado. panelR=new panelRender(). Vamos al panel de la izquierda en el ítem libraries. //this. 6. public class aplRender extends javax. .jar y gluegen-rt. la librería debe encontrarse en: D:\opengl. 9.jar al proyecto.swing. que en realidad es un frame package graficos. reshape: Función pare redibujar el panel cuando este cambia su tamaño. Añadir las siguientes rutas al path del sistema: a. } } 5.getContentPane(). D:\opengl 7. add Jar Fólder y añadimos las librerías. b.add(panelR).add(panelR). apl. Compilemos Al compilar nos salen algunos errores. Display: Función q se ejecutara para realizar los dibujos. Init: Función que inicializa el gráfico d. } public static void main(String args[]) { aplRender apl=new aplRender().setVisible(true). c. public aplRender() { initComponents(). 8. Analicemos el código: Clase JavaRendered a.

Todo el código empleado puede ser entendido mediante un manual de Opengl. 10. Compilamos y ejecutamos . En la clase panelRender usa una clase GLCanvas lo cual es un canvas igual que en Java pero usado especialmente para Opengl.