Primitive Objek Open GL
A. Pengenalan GLUT
Sistem Koordinat didalam laptop ada 3 yaitu :
- Open GL
- Sistem Operasi
Mengikuti resolusi (variabel)
- Fisik (bersifat statis)
1. GLUT (OpenGL Utility Toolkit)
Dikembangkan oleh Mark Kilgard. GLUT merupakan pengembangan dari OpenGL dimana memiliki keunggulan sebagai berikut:
- Mudah, portable window manager, menggunakan callback functions untuk menambahkan interaksi dari user.
- Didesain untuk aplikasi dengan level kecil hingga menengah.
- Distribusi library bebas tetapi tidak open source.
2. Pemrograman Berbasis Event
GLUT pada dasarnya dibangun untuk
menciptakan aplikasi grafis menggunakan pemrograman yang bersifat
prosedural. Di dalamnya terdapat fungsi main loop yang diatur oleh GLUT dan looping yang terjadi dalam aplikasi bertujuan untuk penanganan fungsi-fungsi callback sebagai input dari user seperti fungsi redraw, mouse, keyboard, joystick, dan lain-lain.
B. Primitif Objek
Primitif objek terdiri atas :
- Titik
Yaitu Vertex, dimana vertex merupakan acuan dasar
- Garis
Yaitu Line/Edge
- Bangun 2D (Face)
1. Fungsi Dasar Menggambar Titik
Berikut adalah beberapa fungsi didalam menggambar suatu titik :
- glVertex2i(x,y)
Yaitu suatu fungsi untuk menggambar
titik pada koordinat x dan y, dengan nilai satuan berupa integer. Contoh
glVertex2i(10,10);
- glVertex2f(x,y)
Yaitu suatu fungsi untuk menggambar
titik pada koordinat x dan y, dengan nilai satuan berupa float. Contoh
glVertex2f(10.0,10.0);
- glVertex2d(x,y)
Yaitu suatu fungsi untuk menggambar
titik pada koordinat x dan y, dengan nilai satuan berupa double. Contoh
glVertex2d(10.0,10.0);
2. Primitif Objek
Berikut adalah primitive objek yang akan dipergunakan didalam pembuatan suatu objek :
- # define GL_POINTS
Primitif objek ini dipergunakan untuk menciptakan suatu titik.
- # define GL_LINES
Primitif objek ini adalah suatu primitive objek guna menciptakan suatu garis.
Rumus :
- # define GL_LINE_LOOP
- # define GL_LINE_STRIP
Rumus pada line strip :
- # define GL_TRIANGLES
Triangle atau segitiga adalah tiga buah titik yang terhubung menjadi suatu segitiga dengan blok di tengahnya.
Pada penggunaan primitive objek ini kita harus menggunakan minimal 3 buah vertex guna membentuk suatu objek.
Rumus :
Keterangan :
N = Jumlah Segitiga
- # define GL_TRIANGLES_STRIP
Pada triangles strip jumlah vertex yang dipergunakan adalah 4 buah vertex.
Ilustrasi :
- # define GL_TRIANGLE_FAN
Triangles fan adalah pembuatan suatu objek dengan menggunakan segitiga dimana hanya menggunakan 1 titik pusat saja.
Ilustrasi :
- # define GL_QUADS
Quad atau segempat adalah empat buah titik yang terhubung menjadi suatu segempat dengan blok di tengahnya.
- # define GL_QUADS_STRIP
Pada quads strip 4 buah vertex merupakan 1 kelompok.
Ilustasi :
Langkah rendering pada quads strip :
a. Nomor yang berhadap (membentuk 2 garis yang sejajar)
b. Nomor ganjil dengan nomor ganjil dipertemukan
c. Nomor genap dengan nomor genap dipertemukan
d. Garis yang tersisa akan dipertemukan
- # define GL_POLYGON
Polygon merupakan suatu fungsi yang mirip dengan polyline, tetapi menghasilkan kurva tertutup dengan blok warna (fill). Rendering yang dimiliki oleh GL_POLYGON sama dengan GL_TRIANGLE_FAN
Catatan :
a. glLineWidth yaitu suatu fungsi yang berfungsi untuk mengatur tebalnya garis
b. glPointSize yaitu suatu fungsi yang berfungsi untuk mengatur besarnya suatu objek
c. gluOrtho2D yaitu suatu fungsi untuk
mengatur proyeksi hasil eksekusi dan mendefinisikan besarnya sistem
koordinat dengan urutan kiri-kanan dan bawah-atas.
3. Color
Untuk memberi warna pada objek,
seperti titik atau garis, dapat dilakukan dengan menggunakan fungsi Ã
glColor3f(red,green,blue);
Di mana red, green, blue berada pada 0 sampai dengan 1, yang menunjukkan skala pencerahan dari masing-masing skala.
Berikut adalah beberapa fungsi color :
- glColor3f(0,0,0);//black
- glColor3f(0,0,1);//blue
- glColor3f(0,1,0);//green
- glColor3f(0,1,1)//cyan
- glColor3f(1,0,0)//red
- glColor3f(1,0,1)//magenta
- glColor3f(1,1,0);//yellow
- glColor3f(1,1,1);//white
4. SegiEmpat
Berikut adalah pembuatan suatu objek berupa segiempat :
Proses Rendering :
SegiEmpat (posx, posy, w, h)
Maka sintaks pembuatan segiempat :
glBegin (GL_QUADS);
glVertex2i (posx, posy);
glVertex2i (posx-w, posy);
glVertex2i (posx-w, posy-h);
glVertex2i (posx,posy-h);
C. Transformasi Objek
Transformasi terdiri atas beberapa fungsi yaitu :
1. Fungsi dasar untuk Translasi (perubahan posisi) objek
Penulisan :
glTranslate(d,f) (x,y,z)
a. Fungsi dasar untuk Rotasi objek
Penulisan :
glScale(d,f) (x,y,z)
b. Fungsi dasar untuk skala (perubahan ukuran) objek
Penulisan :
glRotate (d,f) (besarnya sudut, x , y , z) dan besarnya sudut, -1-1, -1-1, -1-1
Contoh pada penggunaan glTranslate :
Catatan :
glPushMatrix berfungsi untuk menyimpan
koordinat yang ada. Sedangkan glPopMatrix adalah suatu fungsi guna
memangil suatu fungsi yang telah disimpan pada glPushMatrix.