OpenGL,Grafi

14
import javax. media.opengl.* La libreria de OpenGL contiene las clases e interfaces necesarias para llamar a todos los métodos de OpenGL en Java Comenzar a trabajar con JOGL

description

GL,OpenGL,Graf,graficacion

Transcript of OpenGL,Grafi

Diapositiva 1

import javax. media.opengl.*

La libreria de OpenGL contiene las clases e interfaces necesarias para llamar a todos los mtodos de OpenGL en Java

Comenzar a trabajar con JOGLimport javax. media.opengl.GLCanvasSoporte para el renderizado de graficos de OpenGL, introducir dentro de un JPanel para poder ser visualizado

import javax. media.opengl.GlEventListenerGLEventListener declara eventos los cuales son utilizados para manipular el renderizado de OpenGL a travs de GLAutodrawable.

import javax. media.opengl.GLAutoDrawable

import javax. media.opengl.GLProporciona acceso a las funciones de OpenGL

Comenzar a trabajar con JOGLDentro del main

GLCanvas canvas= new GLCanvas();JFrame frame= new JFrame("Primitivas");canvas.addGLEventListener(new Puntos());frame.add(canvas);

Dentro de cada mtodo de GLEventListenerGL gl = drawable.getGL();El acceso a todos los mtodos de OpenGL se hace a travs de la clase GL, la instancia de esa clase se debe recuperar del parmetro GLAutoDrawable con que se llama a init(). El programador no debe crear la instancia de GL por si mismo, tampoco debe declararla atributo de la clase para poder acceder a ella desde los mtodos. GLAutodrawable esta ligada al contexto grafico correcto con cada llamada a los mtodos de rellamada. Si el programador crea la instancia de la clase GL no estar ligada a ningn contexto grafico valido y se producir un error al intentar utilizar la instancia. Es una Interface. Todos los dibujos pasaran por la misma

public void init(GLAutoDrawable drawable)GL gl=drawable.getGL();Clase GL

Clases que implementa GLDrawable. Clases capaces de generar eventos dan acceso a OpenGL (equivalentes a un boton JButton que genera eventos ActionEvent)Dibujar utilizando GLCanvas es mas rpido.

Si se desean agregar botones o elementos de Swing. La clase Principal debe implementar a GLEventListener y ademas a ActionListener.

GLCanvas y GLJPanelImplementar interfaz conocida con el nombre de GLEventListenerLos grficos se deben montar en alguna parte, se debe extender de la clase JFrame o JpanelLa interfaz GLEventListener declara eventos los cuales son utilizados por el cdigo cliente para manipular el renderizado de OpenGL a travs de GLAutodrawable.Algo parecido ocurre cuando se implementa la interfaz ActionListener para escuchar los eventos de los botones los cuales se manipulan por el cdigo cliente a travs de ActionEvent.Todo lo que sea manipulado por GLAutoDrawable ser visualizado a travs de un objeto instanciado de la clase GLCanvas.

GLEventListenerUtiliza cuatro mtodos que son los que se rellamaran cada vez que se produzca un evento sobre GLCanvas.public void init(GLAutodrawable drawable)public void display(GLAutodrawable drawable)public void reshape(GLAutodrawable drawable, int x, int y, int width, int height)public void displayChanged(GLAutodrawable, boolean modeChanged, boolean deviceChanged)GLEventListenerEste mtodo es llamado por drawable inmediatamente despus de que el contexto de OpenGL (procedimiento que realizar un objeto GLCanvas) es inicializado. GL gl = drawable.getGL();En el se definen las propiedades de OpenGl para cada aplicacin en particular Puede ser utilizado para la inicializacin de los grficos de OpenGL que GLCanvas utilizar tales como el color de fondo, color de los objetos que se dibujarn, luces que se manejarn, etc.GLEventListenerpublic void init(GLAutodrawable drawable) Este mtodo es llamado por drawable para iniciar el renderizado de OpenGL a peticin del cliente. Dentro de este mtodo se incluirn los grficos que GLCanvas dibujar y ser llamado cada vez que se le solicite, o bien, cuando todos los GLEventListeners hayan sido notificados de que ocurri algn evento.

GLEventListener public void display(GLAutodrawable drawable)Parmetro drawable para obtener el contexto a traves de la instancia de la clase GLPosicin de la esquina superior izquierda, ancho y alto de la ventana

float h=(float) alto/(float) ancho;

Se puede definir aqu el tipo de proyeccin

GLEventListener public void reshape(GLAutodrawable drawable, int x, int y, int width, int height)glBegin(GL.GL_POINTS)Indica a OpenGL que se inicia la entrada de una secuencia de dibujo de una primitiva, es decir comienza un dibujoRecibe una constante que se refiere al tipo de primitiva a dibujarGL_POINTSDebe ir acompaada de un glEnd( );Comandos de dibujoPor ejemplo: glBegin(GL.GL_POINTS): // Definicin de vrticesglEnd()

glVertexNT( ) Especifica la posicin del vrtice actualDonde N = 2, 3 4T = s (short), i (int), f (float) o d (double)Por ejemplo:glVertex3f(0.1f, 0.2f, 0.3f)

glVertex2f(0.0f,0.0f)

Tamao de PuntoGlPontSize(10)

Definicin de VrticesglColorNUT Modifica el estado del color actual de OpenGL Donde N = 3 (RGB) o 4 (RGBA) U = u (para b, s o i) nadaT = b (byte), s (short), i (int), f(float) o d (double) Por ejemplo:glColor3ub(183, 129, 254)glColor3f(0.72f, 0.51f, 1.0f)

Colores