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 -