JOGL - Principes de base du dessin

OpenGL API a fourni des méthodes primitives pour dessiner des éléments graphiques de base tels que point, sommet, ligne, etc. En utilisant ces méthodes, vous pouvez développer des formes telles que triangle, polygone et cercle. Dans les deux dimensions 2D et 3D. Ce chapitre vous apprend à tracer une ligne de base à l'aide de JOGL dans un programme Java.

Objets de dessin

Pour accéder aux programmes spécifiques à un matériel et aux plates-formes de système d'exploitation et où les bibliothèques sont écrites dans d'autres langages tels que C et C ++ (applications natives), Java utilise un cadre de programmation appelé Java Native Interface (JNI). JOGL utilise cette interface en interne pour accéder aux fonctions OpenGL comme indiqué dans le diagramme suivant.

Les quatre méthodes de GLEventListenerinterface ont le code (méthodes java JOGL) pour appeler les fonctions OpenGL en interne. La dénomination de ces méthodes JOGL est également similaire aux conventions de dénomination d'OpenGL. Si le nom de la fonction dans OpenGL estglBegin(), il est utilisé comme gl.glBegin().

Chaque fois que le gl.glBegin() méthode de java JOGL est appelée, elle invoque en interne le glBegin()méthode d'OpenGL. C'est la raison de l'installation des fichiers de bibliothèque natifs sur le système utilisateur au moment de l'installation de JOGL.

La méthode Display ()

C'est une méthode importante qui contient le code pour développer des graphiques. Cela nécessite leGLAutoDrawable objet interface comme paramètre.

le display()La méthode obtient initialement le contexte OpenGL en utilisant l'objet de l'interface GL (GL hérite de l'interface GLBase qui contient des méthodes pour générer tous les objets de contexte OpenGL). Puisque ce tutoriel concerne JOGL2, générons un objet GL2.

L'extrait de code suivant montre comment générer un objet 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();

En utilisant l'objet de l'interface GL2, on peut accéder aux membres de cette interface, qui à leur tour donnent accès aux fonctions d'OpenGL [1.0 ... 3.0].

Tracer une ligne

L'interface GL2 contient une énorme liste de méthodes, mais ici trois méthodes importantes sont discutées à savoir glBegin(), glVertex(), et glEnd().

N ° Sr. Méthodes et description
1

glBegin()

Cette méthode démarre le processus de dessin d'une ligne. Il prend l'entier de chaîne prédéfini «GL_LINES» comme paramètre, hérité de l'interface GL.

2

glVertex3f()/glVertex2f()

Cette méthode crée le sommet et nous devons passer des coordonnées en tant que paramètres 3f et 2f, qui désignent respectivement des coordonnées en virgule flottante en 3 dimensions et des coordonnées en virgule flottante en 2 dimensions.

3

glEnd()

termine la ligne

Vous trouverez ci-dessous le programme pour dessiner une ligne de base en utilisant 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;