JOGL - Transformasi

OpenGL menyediakan lebih banyak fitur seperti menerapkan warna pada objek, penskalaan, pencahayaan, memutar objek, dll. Bab ini menjelaskan beberapa transformasi pada objek menggunakan JOGL.

Memindahkan Objek di Jendela

Pada bab-bab sebelumnya, kita telah membahas program untuk menggambar garis dan menggambar berbagai bentuk menggunakan garis sederhana. Bentuk yang dibuat dengan cara ini dapat ditampilkan di lokasi mana pun di dalam jendela. Itu dilakukan dengan menggunakan metodeglTranslatef (float x, float y, float z).

Metode ini milik GLMatrixFunc antarmuka, yang ada di file javax.media.opengl.fixedfunc paket.

GLMatrixFunc Interface

interface - GLMatrixFunc

package - javax.media.opengl.fixedfunc

Tabel berikut mencantumkan beberapa metode penting dari antarmuka ini -

Sr.No. Metode dan Deskripsi
1

void glRotatef(float angle, float x, float y, float z)

Memutar matriks saat ini.

2

void glScalef(float x, float y, float z)

Digunakan untuk menskalakan matriks saat ini.

3

void glTranslatef(float x, float y,float z)

Digunakan untuk menerjemahkan matriks saat ini.

4

void glLoadIdentity()

Memuat matriks saat ini dengan matriks identitas.

Itu glTranslate() Metode memindahkan asal dari sistem koordinat ke titik yang ditentukan oleh parameter (x, y, z), diteruskan ke glTranslate() metode sebagai

argumen. Untuk menyimpan dan memulihkan sistem koordinat yang belum diterjemahkan,glPushMatrix() dan glPopMatrix() metode yang digunakan.

gl.glTranslatef(0f, 0f, -2.5f);

Kapanpun glTranslate()digunakan, ini mengubah posisi komponen di layar. Oleh karena itu,reshape() metode dari GLEventListener antarmuka harus diganti dan viewport OpenGL serta matriks proyeksi harus diinisialisasi.

Kode berikut menunjukkan template untuk menginisialisasi port tampilan dan matriks proyeksi -

public void reshape(GLAutoDrawable drawable, int x,  int y, int width, int height) { 
  
   // TODO Auto-generated method stub 
   final GL2 gl = drawable.getGL().getGL2();  
            
   // get the OpenGL 2 graphics object   
   if(height <= 0) height = 1; 
       
   //preventing devided by 0 exception height = 1; 
   final float h = (float) width / (float) height; 
            
   // display area to cover the entire window 
   gl.glViewport(0, 0, width, height); 
            
   //transforming projection matrix 
   gl.glMatrixMode(GL2.GL_PROJECTION); 
   gl.glLoadIdentity(); 
   glu.gluPerspective(45.0f, h, 1.0, 20.0); 
      
   //transforming model view gl.glLoadIdentity(); 
   gl.glMatrixMode(GL2.GL_MODELVIEW); 
   gl.glLoadIdentity(); 
}