JOGL - Conceptos básicos de dibujo

OpenGL API ha proporcionado métodos primitivos para dibujar elementos gráficos básicos como puntos, vértices, líneas, etc. Con estos métodos, puede desarrollar formas como triángulos, polígonos y círculos. Tanto en dimensiones 2D como 3D. Este capítulo le enseña cómo dibujar una línea básica usando JOGL en un programa Java.

Objetos de dibujo

Para acceder a programas que son específicos de un hardware y plataformas de sistema operativo y donde las bibliotecas están escritas en otros lenguajes como C y C ++ (aplicaciones nativas), Java usa un marco de programación llamado Java Native Interface (JNI). JOGL utiliza esta interfaz internamente para acceder a las funciones de OpenGL como se muestra en el siguiente diagrama.

Los cuatro métodos de GLEventListenerLa interfaz tiene el código (métodos java JOGL) para llamar a las funciones OpenGL internamente. La denominación de esos métodos JOGL también es similar a las convenciones de denominación de OpenGL. Si el nombre de la función en OpenGL esglBegin(), se usa como gl.glBegin().

Siempre que el gl.glBegin() Se llama al método de java JOGL, invoca internamente el glBegin()método de OpenGL. Esta es la razón para instalar archivos de bibliotecas nativas en el sistema del usuario al momento de instalar JOGL.

El método Display ()

Este es un método importante que contiene el código para desarrollar gráficos. Requiere elGLAutoDrawable objeto de interfaz como parámetro.

los display()El método obtiene inicialmente el contexto OpenGL usando el objeto de la interfaz GL (GL hereda la interfaz GLBase que contiene métodos para generar todos los objetos de contexto OpenGL). Dado que este tutorial trata sobre JOGL2, generemos un objeto GL2.

El siguiente fragmento de código muestra cómo generar un objeto 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();

Usando el objeto de la interfaz GL2, se puede acceder a los miembros de esta interfaz, que a su vez brindan acceso a las funciones de OpenGL [1.0 ... 3.0].

Dibujar una línea

La interfaz GL2 contiene una gran lista de métodos, pero aquí se discuten tres métodos importantes principales, a saber glBegin(), glVertex()y glEnd().

No Señor. Métodos y descripción
1

glBegin()

Este método inicia el proceso de trazar una línea. Toma el entero de cadena predefinido "GL_LINES" como parámetro, que se hereda de la interfaz GL.

2

glVertex3f()/glVertex2f()

Este método crea el vértice y tenemos que pasar coordenadas como parámetros 3f y 2f, que denotan coordenadas de punto flotante tridimensionales y coordenadas de punto flotante bidimensionales respectivamente.

3

glEnd()

termina la linea

A continuación se muestra el programa para dibujar una línea básica usando 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;