
Iniziamo creando un’applicazione visuale, che serva da controllo della finestra di rendering, con i pulsanti Show, Hide, Fullscreen, Start, Stop: tutti i progetti che svilupperemo faranno sempre uso di una finestra di controllo simile a questa.

Ricordandoci di aggiungere al progetto la libreria JOGL2, scriviamo le seguenti linee di codice e i gestori di evento associati ai 5 pulsanti; il listato dovrebbe essere simile al seguente:
Main.java
public class Main extends javax.swing.JFrame {
GLWindow window;
FPSAnimator animator;
GLRenderer renderer;
public Main() {
[...] // crea la JFrame e i bottoni
window = GLWindow.create(new GLCapabilities(GLProfile.getDefault())); // crea la finestra di rendering
window.setTitle("OpenGL prova - GLWindow"); // imposta il titolo
window.setSize(800, 600); // imposta la dimensione
renderer = new GLRenderer(); // istanzia la classe GLRenderer
window.addGLEventListener(renderer); // passa all'ascolatore di eventi l'oggetto renderer
animator = new FPSAnimator(window, 60, true); // istanzia la classe FPSAnimator, 60 è la frequenza di rendering
}
private void btnHideActionPerformed(java.awt.event.ActionEvent evt) {
window.setVisible(false);
}
private void btnShowActionPerformed(java.awt.event.ActionEvent evt) {
window.setVisible(true);
}
private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {
animator.start();
}
private void btnStopActionPerformed(java.awt.event.ActionEvent evt) {
animator.stop();
}
private void btnFullscreenActionPerformed(java.awt.event.ActionEvent evt) {
window.setFullscreen(btnFullscreen.isSelected());
}
Il disegno che si vuole realizzare viene definito all’interno del metodo display della classe GLRenderer che implementa l’interfaccia GLEventListener. Nel nostro esempio disegniamo il triangolo con i tre vertici colorati con i 3 colori primari; il listato è riportato di seguito.
GLRenderer.java
public class GLRenderer implements GLEventListener {
@Override
public void init(GLAutoDrawable drawable) { }
@Override
public void dispose(GLAutoDrawable drawable) { }
@Override
public void display(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL.GL_COLOR_BUFFER_BIT); // cancella la finestra
gl.glBegin(GL.GL_TRIANGLES);
gl.glColor3f(1, 0, 0); // il 1° vertice è rosso
gl.glVertex2d(-1, 0);
gl.glColor3f(0, 1, 0); // il 2° vertice è verde
gl.glVertex2d(1, 0);
gl.glColor3f(0, 0, 1); // il 3° vertice è blu
gl.glVertex2d(0, 1);
gl.glEnd();
}
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { }
}
Progetto Eclipse: Esempio2D.zip
(controllare nelle Referenced Libraries che i percorsi dei file gluegen-rt.jar e jogl-all.jar siano corretti)