JOGL - Tela com AWT

Este capítulo explica como desenhar um quadro básico JOGL usando Canvas com quadro AWT. Aqui, vamos construir um quadro AWT e adicionar o objeto de tela ao quadro AWT usando oadd() método da classe frame.

Abaixo, são fornecidas as etapas para escrever um programa que cria um quadro básico JOGL com a combinação da classe Canvas do JOGL e a classe Frame do AWT.

Etapa 1: Criação da classe

Crie inicialmente uma classe que implemente GlEventListenerinterface e importe o pacote javax.media.opengl. Implementar todos os quatro métodosdisplay(), dispose(), reshape(), init().Como este é o quadro básico, tarefas primitivas, como a criação de uma classe de tela e sua adição ao quadro, foram discutidas. TodosGLEVentListener os métodos de interface não foram implementados.

Etapa 2: Preparando a tela

(a) Construindo o GLCanvas objeto de classe

final GLCanvas glcanvas = new GLCanvas( xxxxxxx );

//here capabilities obj should be passed as parameter

(b) Instanciando o GLCapabilities classe

GLCapabilities capabilities = new GLCapabilities( xxxxx );

//here profile obj should be passed as parameter

(c) Gerando GLProfile objeto

Por ser um método estático, é invocado usando o nome da classe. Como este tutorial é sobre JOGL2, vamos gerar o objeto de interface GL2.

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

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

Vamos ver o trecho de código da tela.

//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) Agora adicione GLEventListener para a tela usando o método addGLEventListener(). Este método precisa de objeto deGLEventListenerinterface como parâmetro. Portanto, passe o objeto de uma classe que implementaGLEventListener.

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

(e) Defina o tamanho do quadro usando o método setSize () herdado por GLCanvas de javax.media.opengl.awt.AWTGLAutoDrawable.

glcanvas.setSize( 400, 400 );

Agora você está pronto com GLCanvas.

Passo 3: Criando o Quadro

Crie o quadro instanciando o Frame classe Objeto do componente de quadro JSE AWT.

Adicione uma tela a ele e torne a moldura visível.

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

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

Etapa 4: Visualização do quadro em tela inteira

Para visualizar o quadro em tela inteira, obtenha o tamanho de tela padrão usando java.awt.Toolkitclasse. Agora, usando essas dimensões de tamanho de tela padrão, defina o tamanho do quadro usandosetSize() método.

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

Vamos percorrer o programa para gerar o quadro 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);
   }
	
}

Se você compilar e executar o programa acima, a seguinte saída será gerada. Ele mostra um quadro básico formado quando usamosGLCanvas classe com AWT -