JOGL - Canvas con AWT

Questo capitolo spiega come disegnare un frame base JOGL utilizzando Canvas con frame AWT. Qui costruiremo un frame AWT e aggiungeremo l'oggetto canvas al frame AWT usando iladd() metodo della classe frame.

Di seguito sono riportati i passaggi per scrivere un programma che crea un frame di base JOGL con la combinazione della classe Canvas di JOGL e della classe Frame di AWT.

Passaggio 1: creazione della classe

Inizialmente crea una classe che implementa GlEventListenerinterfaccia e importa il pacchetto javax.media.opengl. Implementa tutti e quattro i metodidisplay(), dispose(), reshape(), init().Poiché questo è il frame di base, sono state discusse attività primitive come la creazione di una classe canvas e l'aggiunta a frame. Tutti iGLEVentListener i metodi di interfaccia non sono stati implementati.

Passaggio 2: preparazione della tela

(a) Costruire il file GLCanvas oggetto di classe

final GLCanvas glcanvas = new GLCanvas( xxxxxxx );

//here capabilities obj should be passed as parameter

(b) Istanziare il file GLCapabilities classe

GLCapabilities capabilities = new GLCapabilities( xxxxx );

//here profile obj should be passed as parameter

(c) Generazione GLProfile oggetto

Poiché è il metodo statico, viene richiamato utilizzando il nome della classe. Poiché questo tutorial riguarda JOGL2, generiamo l'oggetto dell'interfaccia GL2.

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

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

Vediamo lo snippet di codice per 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) Ora aggiungi GLEventListener alla tela utilizzando il metodo addGLEventListener(). Questo metodo necessita di oggettoGLEventListenerinterfaccia come parametro. Quindi, passa l'oggetto di una classe che implementaGLEventListener.

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

(e) Imposta la dimensione del frame utilizzando il metodo setSize () ereditato da GLCanvas da javax.media.opengl.awt.AWTGLAutoDrawable.

glcanvas.setSize( 400, 400 );

Ora sei pronto con GLCanvas.

Passaggio 3: creazione della cornice

Crea il frame istanziando il file Frame class Oggetto del componente frame JSE AWT.

Aggiungi una tela e rendi visibile la cornice.

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

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

Passaggio 4: visualizzazione del fotogramma a schermo intero

Per visualizzare il frame a schermo intero, ottenere le dimensioni dello schermo predefinite utilizzando java.awt.Toolkitclasse. Ora, utilizzando le dimensioni delle dimensioni dello schermo predefinite, imposta le dimensioni del frame utilizzandosetSize() metodo.

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

Esaminiamo il programma per generare il frame di base utilizzando 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);
   }
	
}

Se compili ed esegui il programma sopra, viene generato il seguente output. Mostra una cornice di base formata quando usiamoGLCanvas classe con AWT -