JOGL - Desenho Básico

A API OpenGL fornece métodos primitivos para desenhar elementos gráficos básicos, como ponto, vértice, linha, etc. Usando esses métodos, você pode desenvolver formas como triângulo, polígono e círculo. Em ambas as dimensões, 2D e 3D. Este capítulo ensina como desenhar uma linha básica usando JOGL em um programa Java.

Objetos de Desenho

Para acessar programas que são específicos para plataformas de hardware e sistema operacional e onde as bibliotecas são escritas em outras linguagens como C e C ++ (aplicativos nativos), Java usa uma estrutura de programação chamada Java Native Interface (JNI). O JOGL usa essa interface internamente para acessar as funções do OpenGL conforme mostrado no diagrama a seguir.

Todos os quatro métodos de GLEventListenerinterface tem o código (métodos java JOGL) para chamar funções OpenGL internamente. A nomenclatura desses métodos JOGL também é semelhante às convenções de nomenclatura do OpenGL. Se o nome da função em OpenGL forglBegin(), é usado como gl.glBegin().

Sempre que gl.glBegin() método de java JOGL é chamado, ele invoca internamente o glBegin()método do OpenGL. Esta é a razão para instalar os arquivos da biblioteca nativa no sistema do usuário no momento da instalação do JOGL.

O Método Display ()

Este é um método importante que contém o código para desenvolver gráficos. Requer oGLAutoDrawable objeto de interface como seu parâmetro.

o display()O método inicialmente obtém o contexto OpenGL usando o objeto da interface GL (GL herda a interface GLBase que contém métodos para gerar todos os objetos de contexto OpenGL). Como este tutorial é sobre JOGL2, vamos gerar um objeto GL2.

O seguinte trecho de código mostra como gerar um 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();

Utilizando o objeto da interface GL2, é possível acessar os membros desta interface, que por sua vez fornecem acesso às funções do OpenGL [1.0 ... 3.0].

Desenhando uma Linha

A interface GL2 contém uma lista enorme de métodos, mas aqui três métodos importantes principais são discutidos, a saber glBegin(), glVertex()e glEnd().

Sr. Não. Métodos e Descrição
1

glBegin()

Este método inicia o processo de desenho de uma linha. Ele leva o número inteiro de string predefinido “GL_LINES” como parâmetro, que é herdado da interface GL.

2

glVertex3f()/glVertex2f()

Este método cria o vértice e temos que passar as coordenadas como parâmetros 3f e 2f, que denotam coordenadas de ponto flutuante tridimensional e coordenadas de ponto flutuante bidimensional, respectivamente.

3

glEnd()

termina a linha

Abaixo fornecido é o programa para desenhar uma linha 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;