JOGL - Canvas z AWT

W tym rozdziale wyjaśniono, jak narysować podstawową ramkę JOGL za pomocą Canvas z ramką AWT. Tutaj skonstruujemy ramkę AWT i dodamy obiekt płótna do ramki AWT za pomocą rozszerzeniaadd() metoda klasy ramek.

Poniżej podano kroki, jakie należy wykonać, aby napisać program, który tworzy podstawową ramkę JOGL z kombinacją klasy JOGL Canvas i klasy Frame AWT.

Krok 1: Tworzenie klasy

Najpierw utwórz klasę, która implementuje GlEventListenerinterfejs i zaimportuj pakiet javax.media.opengl. Zastosuj wszystkie cztery metodydisplay(), dispose(), reshape(), init().Ponieważ jest to podstawowa ramka, omówiono prymitywne zadania, takie jak tworzenie klasy canvas, dodawanie jej do ramki. WszystkieGLEVentListener metody interfejsu nie zostały zaimplementowane.

Krok 2: Przygotowanie płótna

(a) Konstruowanie GLCanvas obiekt klasy

final GLCanvas glcanvas = new GLCanvas( xxxxxxx );

//here capabilities obj should be passed as parameter

(b) Tworzenie wystąpienia GLCapabilities klasa

GLCapabilities capabilities = new GLCapabilities( xxxxx );

//here profile obj should be passed as parameter

(c) Generowanie GLProfile obiekt

Ponieważ jest to metoda statyczna, jest wywoływana przy użyciu nazwy klasy. Ponieważ ten samouczek dotyczy JOGL2, wygenerujmy obiekt interfejsu GL2.

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

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

Zobaczmy fragment kodu dla kanwy.

//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) Teraz dodaj GLEventListener do płótna za pomocą metody addGLEventListener(). Ta metoda wymaga obiektuGLEventListenerinterfejs jako parametr. W związku z tym przekaż obiekt klasy, która implementujeGLEventListener.

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

(e) Ustaw rozmiar ramki za pomocą metody setSize () dziedziczonej przez GLCanvas z javax.media.opengl.awt.AWTGLAutoDrawable.

glcanvas.setSize( 400, 400 );

Teraz jesteś gotowy GLCanvas.

Krok 3: Tworzenie ramy

Utwórz ramkę, tworząc wystąpienie Frame class Obiekt komponentu ramki JSE AWT.

Dodaj do niego płótno i spraw, aby ramka była widoczna.

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

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

Krok 4: Oglądanie ramki na pełnym ekranie

Aby wyświetlić ramkę na pełnym ekranie, ustaw domyślny rozmiar ekranu za pomocą java.awt.Toolkitklasa. Teraz, używając tych domyślnych wymiarów ekranu, ustaw rozmiar ramki za pomocąsetSize() metoda.

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

Przejdźmy przez program, aby wygenerować podstawową ramkę za pomocą 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);
   }
	
}

Jeśli kompilujesz i wykonujesz powyższy program, generowany jest następujący wynik. Pokazuje podstawową ramkę utworzoną podczas używaniaGLCanvas klasa z AWT -