JOGL - Çizim Temelleri

OpenGL API, nokta, tepe noktası, çizgi vb. Gibi temel grafik öğeleri çizmek için ilkel yöntemler sağlamıştır. Bu yöntemleri kullanarak, üçgen, çokgen ve daire gibi şekiller geliştirebilirsiniz. Hem 2D hem de 3D boyutlarda. Bu bölüm, bir Java programında JOGL kullanarak temel bir çizgi çizmeyi öğretir.

Çizim Nesneleri

Bir donanım ve işletim sistemi platformlarına özgü olan ve kitaplıkların C ve C ++ (yerel uygulamalar) gibi diğer dillerde yazıldığı programlara erişmek için Java, adında bir programlama çerçevesi kullanır. Java Native Interface (JNI). JOGL, aşağıdaki şemada gösterildiği gibi OpenGL işlevlerine erişmek için bu arayüzü dahili olarak kullanır.

Dört yöntemin tümü GLEventListenerarabirim OpenGL işlevlerini dahili olarak çağırmak için koda (java JOGL yöntemleri) sahiptir. Bu JOGL yöntemlerinin adlandırılması da OpenGL'nin adlandırma kurallarına benzer. OpenGL'deki işlev adıglBegin()olarak kullanılır gl.glBegin().

Ne zaman gl.glBegin() java JOGL yöntemi çağrılır, dahili olarak glBegin()OpenGL yöntemi. Bu, JOGL'nin yüklenmesi sırasında kullanıcı sistemine yerel kitaplık dosyalarının yüklenmesinin nedenidir.

Display () Yöntemi

Bu, grafik geliştirme kodunu tutan önemli bir yöntemdir. GerektirirGLAutoDrawable parametresi olarak arabirim nesnesi.

display()yöntem, başlangıçta GL arabiriminin nesnesini kullanarak OpenGL bağlamını alır (GL, tüm OpenGL bağlam nesnelerini oluşturmak için yöntemler içeren GLBase arabirimini miras alır). Bu eğitim JOGL2 hakkında olduğundan, bir GL2 nesnesi oluşturalım.

Aşağıdaki kod parçacığı bir GL2 Nesnesinin nasıl oluşturulacağını gösterir -

//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();

GL2 arabiriminin nesnesini kullanarak, bu arabirimin üyelerine erişebilir ve bu da OpenGL [1.0 ... 3.0] işlevlerine erişim sağlar.

Çizgi Çizme

GL2 arayüzü geniş bir yöntem listesi içerir, ancak burada üç ana önemli yöntem tartışılmaktadır. glBegin(), glVertex(), ve glEnd().

Sr.No. Yöntemler ve Açıklama
1

glBegin()

Bu yöntem, çizgi çizme sürecini başlatır. Parametre olarak, GL arayüzünden miras alınan, önceden tanımlanmış “GL_LINES” tam sayı dizisi alır.

2

glVertex3f()/glVertex2f()

Bu yöntem tepe noktasını oluşturur ve koordinatları sırasıyla 3 boyutlu kayan nokta koordinatlarını ve 2 boyutlu kayan nokta koordinatlarını gösteren 3f ve 2f parametreleri olarak geçirmemiz gerekir.

3

glEnd()

çizgiyi bitirir

Aşağıda, JOGL kullanarak temel bir çizgi çizen program verilmiştir -

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;