Beruflich Dokumente
Kultur Dokumente
I) Objetivo
Proporcionar al estudiante opciones de herramientas de desarrollo para el desarrollo de aplicativos en la
asignatura de Computacin Grfica.
II) Marco conceptual
Introduccin a OpenGL
En OpenGL se proporciona una biblioteca bsica de funciones para especificar primitivas grficas, atributos,
transformaciones geomtricas, transformaciones de visualizacin y muchas otras operaciones. Est diseada para
ser independiente del hardware, por tanto, muchas operaciones, tales como las subrutinas de entrada y salida, no
estn incluidas en la biblioteca bsica. Sin embargo, las subrutinas de entrada y salida y muchas funciones
adicionales estn disponibles en bibliotecas auxiliares que se han desarrollado para programas OpenGL.
A algunos argumentos de funciones de OpenGL se les puede asignar valores empleando una matriz que enumera
un conjunto de valores de datos. Esta opcin se utiliza para especificar una lista de valores como un puntero a una
matriz, en lugar de especificar cada elemento de la lista explcitamente como un argumento. Un ejemplo tpico del
uso de esta opcin es la especificacin de los valores de las coordenadas xyz.
Bibliotecas relacionadas
Existe un gran nmero de bibliotecas relacionadas para la realizacin de operaciones especiales, adems de la
biblioteca bsica de OpenGL. La utilidad GLU (OpenGL Utility) proporciona subrutinas para la configuracin de las
matrices de visualizacin y proyeccin, descripcin de objetos complejos mediante lneas y aproximaciones
poligonales, visualizacin de cudricas y splines B empleando aproximaciones lineales, procesamiento de
operaciones de representacin de superficies y otras tareas complejas. Toda implementacin de OpenGL incluye la
biblioteca GLU. Todos los nombres de las funciones de GLU comienzan con el prefijo glu. Tambin existe un conjunto
de herramientas orientadas a objetos basado en OpenGL, llamado Open Inventor que proporciona subrutinas y
formas de objetos predefinidos para su uso en aplicaciones tridimensionales interactivas.
Para crear grficos utilizando OpenGL, necesitamos en primer lugar configurar una ventana de visualizacin en
nuestra pantalla de vdeo. Se trata simplemente de la zona rectangular de la pantalla en la que nuestra imagen se
mostrar. No podemos crear directamente la ventana de visualizacin con las funciones de OpenGL bsicas, ya que
esta biblioteca contiene nicamente funciones grficas independientes del dispositivo, y las operaciones de gestin
de ventanas dependen de la computadora que estemos utilizando. Sin embargo, existen varias bibliotecas de
sistema de ventanas que soportan las funciones de OpenGL en una gran variedad de mquinas. El kit de
herramientas GLUT (OpenGL Utility Toolkit) proporciona una biblioteca de funciones para interactuar con cualquier
sistema de ventanas. Las funciones de la biblioteca GLUT utilizan como prefijo glut. Esta biblioteca tambin contiene
mtodos para describir y representar superficies y curvas cudricas.
III) Prcticas.
Descargados estos archivos, debemos descomprimirlos y luego aadir a la librera de nuestra aplicacin en java los
paquetes de clases Jar siguientes:
gluegen-rt.jar
gluegen-rt-natives-windows-i586.jar
jogl.all.jar
jogl-all-natives-windows-i586.jar
Una vez cargados estos Jar en la librera crear las Renderer y Ventana como se muestra en la figura:
Clase Ventana
package geometrias.frontend;
import geometrias.Renderer_Punto;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLProfile;
UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA
ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS
COMPUTACIN GRAFICA
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;
/**
*
* @author
*/
public class Ventana {
Clase Renderer_Punto
package geometrias;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
/**
*
* @author h
*/
public class Renderer_Punto implements GLEventListener {
@Override
public void init(GLAutoDrawable gLDrawable) {
logger.log(Level.INFO, "mtodo - init");
// Provee un objeto que enlaza las APIs del OpenGL
// Que se encargara de realizar las instrucciones de dibujos
gl = gLDrawable.getGL().getGL2();
@Override
public void reshape(GLAutoDrawable glad, int x, int y, int width,
int height) {
logger.log(Level.INFO, "Reshape");
// 7. Especificar el rea de dibujo (frame) utilizamos coordenadas
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(0, width, 0, height, -1.0, 1.0);
}
@Override
public void display(GLAutoDrawable drawable) {
logger.log(Level.INFO, "Display");
// 8. Especificar el dibujo de un punto
gl.glPointSize(10); // Determina el tamao de un punto
gl.glBegin(GL2.GL_POINTS);
gl.glVertex2i(350, 350);
gl.glEnd();
}
@Override
public void dispose(GLAutoDrawable glad) {
throw new UnsupportedOperationException("Not supported yet.");
}
Resultado:
UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA
ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS
COMPUTACIN GRAFICA
IV) Tarea
1) En base a la aplicacin de la prctica modifique la aplicacin cambiar el color de la ventana a blanco.
2) Modificar el programa de la prctica para dibujar puntos aleatorios en la ventana.
3) Modificar el programa de la prctica para que el programa pueda solicitar al usuario coordenadas de puntos para
que se dibujen en la ventana.
V) Referencias
JOGL in Eclipse: http://schabby.de/jogl-example-hello-world/
JOGL (Java OpenGL) Tutorial: http://www.land-of-kain.de/docs/jogl/
JogAmp: http://jogamp.org/
Ejemplos de Swing y JOGL: http://www.genedavissoftware.com/books/jogl/ljogl_ch2.html
/** * * @author
UNIVERSIDAD ANDINA DEL CUSCO FACULTAD DE INGENIERA
ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS
COMPUTACIN GRAFICA
Resultado: