JOGL - Lienzo con AWT

Este capítulo explica cómo dibujar un marco básico de JOGL usando Canvas con marco AWT. Aquí construiremos un marco AWT y agregaremos el objeto de lienzo al marco AWT usando eladd() método de la clase de trama.

A continuación se indican los pasos para escribir un programa que cree un marco básico de JOGL con la combinación de la clase Canvas de JOGL y la clase Frame de AWT.

Paso 1: creación de la clase

Cree inicialmente una clase que implemente GlEventListenerinterfaz e importe el paquete javax.media.opengl. Implementar los cuatro métodosdisplay(), dispose(), reshape(), init().Dado que este es el marco básico, se discutieron tareas primitivas como crear una clase de lienzo y agregarlo al marco. TodosGLEVentListener los métodos de interfaz se dejaron sin implementar.

Paso 2: preparación del lienzo

(a) Construyendo el GLCanvas objeto de clase

final GLCanvas glcanvas = new GLCanvas( xxxxxxx );

//here capabilities obj should be passed as parameter

(b) Instanciar el GLCapabilities clase

GLCapabilities capabilities = new GLCapabilities( xxxxx );

//here profile obj should be passed as parameter

(c) Generando GLProfile objeto

Como es el método estático, se invoca mediante el nombre de la clase. Dado que este tutorial trata sobre JOGL2, generemos el objeto de interfaz GL2.

final GLProfile profile = GLProfile.get( GLProfile.GL2 );

// both, variable and method are static hence both are called using class name.

Veamos el fragmento de código de canvas.

//getting the capabilities object of GL2 profile

final GLProfile profile = GLProfile.get(GLProfile.GL2);
GLCapabilities capabilities = new GLCapabilities(profile);

// The canvas
final GLCanvas glcanvas = new GLCanvas(capabilities);

(d) Ahora agregue GLEventListener al lienzo usando el método addGLEventListener(). Este método necesita objeto deGLEventListenerinterfaz como parámetro. Por lo tanto, pase el objeto de una clase que implementeGLEventListener.

BasicFrame basicframe = newBasic Frame( );// class which implements
GLEventListener interface
glcanvas.addGLEventListener( basicframe );

(e) Establezca el tamaño del marco usando el método setSize () heredado por GLCanvas de javax.media.opengl.awt.AWTGLAutoDrawable.

glcanvas.setSize( 400, 400 );

Ahora estás listo con GLCanvas.

Paso 3: creación del marco

Cree el marco instanciando el Frame class Objeto del componente de trama JSE AWT.

Agregue un lienzo y haga que el marco sea visible.

//creating frame
final Frame frame = new frame( " Basic Frame" );

//adding canvas to frame
frame.add( glcanvas );
frame.setVisible( true );

Paso 4: visualización del fotograma en pantalla completa

Para ver el marco en pantalla completa, obtenga el tamaño de pantalla predeterminado usando java.awt.Toolkitclase. Ahora, usando esas dimensiones de tamaño de pantalla predeterminadas, configure el tamaño del marco usandosetSize() método.

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(screenSize.width, screenSize.height);

Repasemos el programa para generar el marco básico usando AWT -

import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;

import javax.swing.JFrame;

public class BasicFrame implements GLEventListener {

   @Override
   public void display(GLAutoDrawable arg0) {
      // method body
   }
	
   @Override
   public void dispose(GLAutoDrawable arg0) {
      //method body
   }
	
   @Override
   public void init(GLAutoDrawable arg0) {
      // method body
   }
	
   @Override
   public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
      // method body
   }
	
   public static void main(String[] args) {
   
      //getting the capabilities object of GL2 profile
      final GLProfile profile = GLProfile.get(GLProfile.GL2);
      GLCapabilities capabilities = new GLCapabilities(profile);
        
      // The canvas
      final GLCanvas glcanvas = new GLCanvas(capabilities);
      BasicFrame b = new BasicFrame();
      glcanvas.addGLEventListener(b);        
      glcanvas.setSize(400, 400);
        
      //creating frame
      final Frame frame = new Frame (" Basic Frame");
        
      //adding canvas to frame
      frame.add(glcanvas);
      frame.setSize( 640, 480 );
      frame.setVisible(true);
   }
	
}

Si compila y ejecuta el programa anterior, se genera la siguiente salida. Muestra un marco básico formado cuando usamosGLCanvas clase con AWT -