JOGL - Nozioni di base sul disegno

L'API OpenGL ha fornito metodi primitivi per disegnare elementi grafici di base come punto, vertice, linea ecc. Usando questi metodi, è possibile sviluppare forme come triangolo, poligono e cerchio. In entrambe le dimensioni, 2D e 3D. Questo capitolo insegna come disegnare una linea di base utilizzando JOGL in un programma Java.

Oggetti di disegno

Per accedere a programmi che sono specifici per un hardware e piattaforme di sistema operativo e dove le librerie sono scritte in altri linguaggi come C e C ++ (applicazioni native), Java utilizza un framework di programmazione chiamato Java Native Interface (JNI). JOGL utilizza questa interfaccia internamente per accedere alle funzioni OpenGL come mostrato nel diagramma seguente.

Tutti i quattro metodi di GLEventListenerl'interfaccia ha il codice (metodi java JOGL) per chiamare internamente le funzioni OpenGL. Anche la denominazione di questi metodi JOGL è simile alle convenzioni di denominazione di OpenGL. Se il nome della funzione in OpenGL èglBegin(), è usato come gl.glBegin().

Ogni volta che il file gl.glBegin() viene chiamato il metodo di java JOGL, che richiama internamente il glBegin()metodo di OpenGL. Questo è il motivo per l'installazione dei file di libreria nativi sul sistema utente al momento dell'installazione di JOGL.

Il metodo Display ()

Questo è un metodo importante che contiene il codice per lo sviluppo della grafica. Richiede ilGLAutoDrawable oggetto interfaccia come parametro.

Il display()inizialmente ottiene il contesto OpenGL utilizzando l'oggetto dell'interfaccia GL (GL eredita l'interfaccia GLBase che contiene metodi per generare tutti gli oggetti contesto OpenGL). Poiché questo tutorial riguarda JOGL2, generiamo un oggetto GL2.

Il seguente frammento di codice mostra come generare un oggetto GL2:

//Generating GL object
GL gl = drawable.getGL();
GL gl = drawable.getGL();

//Using this Getting the Gl2 Object
//this can be written in a single line like
final GL2 gl = drawable.getGL().getGL2();

Utilizzando l'oggetto dell'interfaccia GL2, è possibile accedere ai membri di questa interfaccia, che a loro volta forniscono l'accesso alle funzioni OpenGL [1.0 ... 3.0].

Disegnare una linea

L'interfaccia GL2 contiene un enorme elenco di metodi, ma qui vengono discussi tre metodi importanti principali glBegin(), glVertex(), e glEnd().

Sr.No. Metodi e descrizione
1

glBegin()

Questo metodo avvia il processo di disegno di una linea. Accetta come parametro il numero intero di stringa predefinito "GL_LINES", ereditato dall'interfaccia GL.

2

glVertex3f()/glVertex2f()

Questo metodo crea il vertice e dobbiamo passare le coordinate come parametri 3f e 2f, che denotano rispettivamente coordinate in virgola mobile tridimensionale e coordinate in virgola mobile bidimensionale.

3

glEnd()

finisce la linea

Di seguito viene fornito il programma per disegnare una linea di base utilizzando JOGL -

import javax.media.opengl.GL2;
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 Line implements GLEventListener {

   @Override
   public void display(GLAutoDrawable drawable) {
      final GL2 gl = drawable.getGL().getGL2();
            
      gl.glBegin (GL2.GL_LINES);//static field
      gl.glVertex3f(0.50f,-0.50f,0);
      gl.glVertex3f(-0.50f,0.50f,0);
      gl.glEnd();

   }
            
   @Override
   public void dispose(GLAutoDrawable arg0) {
      //method body
   }
            
   @Override
   public void init(GLAutoDrawable arg0) {
      // 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);
      Line l = new Line();
      glcanvas.addGLEventListener(l);
      glcanvas.setSize(400, 400);
   
      //creating frame
      final JFrame frame = new JFrame ("straight Line");
   
      //adding canvas to frame
      frame.getContentPane().add(glcanvas);
                 
      frame.setSize(frame.getContentPane().getPreferredSize());
      frame.setVisible(true);
      
   }//end of main
	
}//end of classimport javax.media.opengl.GL2;