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 -