Sabtu, 07 April 2012

Pemrograman OpenGL sederhana pada Linux

Pasti sudah pernah dengar kan? apa itu openGL. OpenGL merupakan library yang digunakan untuk melakukan operasi grafis pada komputer, seperti game, menampilkan GUI, dll. Kali ini saya akan membahas cara instalasi tools yang diperlukan untuk membuat program openGL sederhana, tahap kompilasi sampai running, dan penjelasan singkat source code.

requirement : distro ubuntu, text editor(gedit), mengerti dasar-dasar linux(linux basic)

TAHAP PERSIAPAN
paket-paket bawaan atau yang telah terpasang pada distro ubuntu saat pertama kali install, belum menyediakan tools development openGL. Untuk menginstallnya ketikkan :

sudo apt-get install mesa-common-dev freeglut3-dev build-essential

setelah instalasi berhasil, langkah selanjutnya adalah menulis program. Sebagai tutorial saya akan menyajikan program sederhana buatan saya. Program ini akan menampilkan animasi 6 kubus warna-warni yang bergerak bolak-balik. Source code nya dapat dilihat dibawah :



lansung copas saja kode diatas lalu di save dengan nama animate.c

TAHAP KOMPILASI

setelah file nya di save, ketik perintah dibawah ini lewat terminal :

gcc -o animate animate.c -lX11 -lGL -lGLU

RUN THE PROGRAM

jika saat kompilasi tidak ada error, jalankan progrram dengan mengetikkan perintah di bawah via terminal :

 ./animate
Animasi OpenGL
Animasi OpenGL

PENJELASAN SOURCE CODE

Cukup panjang ya.. kode programnya? Tenang saya akan menjelaskan secara singkat kode programnya, ehemmm...

#include<stdio.h>
#include<stdlib.h>
#include<X11/X.h>
#include<X11/Xlib.h>
#include<GL/gl.h>
#include<GL/glx.h>
#include<GL/glu.h>
#include<GL/glut.h>

baris include diatas berfungsi untuk menyertakan semua header library openGL dan standart library C. Header "X11" berguna untuk membuat frame/window pada display, tempat dimana objek akan digambar oleh program. Header "GL/gl*" terdapat fungsi untuk menggambar garis, vertex, bentuk-bentuk primitif geometris, pewarnaan, dan operasi-operasi lainnya yang dapat dilakukan pada display.

float randFloat(float a, float b)

fungsi ini akan menghasilkan bilangan pecahan random yang digunakan oleh fungsi main() untuk menhasilkan animasi. Fungsi ini membutuhkan dua buah argumen untuk menentukan batas bawah (a) dan batas atas (b) bilangan pecahan.

void DrawAQuad(float xpos, float ypos, float zpos,float r, float g, float b) {

Kubus digambar oleh fungsi ini dimana letak nya diatur oleh xpos, ypos, dan zpos. Sedangkan untuk warna dari kubus diatur oleh r, g, b. Kubus memiliki enam sisi, untuk menghasilkan salah satu sisi dalam openGL dapat dilihat pada kode program di bawah :

glBegin(GL_QUADS);// depan
  glColor3f(r, g, 0.5);
  glVertex3f(xpos + 0, ypos + 0, zpos + 0.);
  glVertex3f(xpos +  0, ypos + (.05*scale), zpos + 0.);
  glVertex3f( xpos + (.05*scale),  ypos + (.05*scale), zpos + 0.);
  glVertex3f(xpos + (.05*scale),  ypos + 0, zpos + 0.);
glEnd();

glBegin(GL_QUADS); menyatakan openGL akan membuat persegi yang selanjutnya pewarnaan dilakukan oleh fungsi glColor3f() dan posisi sudut ditentukan oleh keempat fungsi glVertex3f().

DrawAQuad(.0 + tambah, .0, .0, 5, 0.2,0.098,0.2+tambah);
DrawAQuad(.0 - tambah, .0, .0, 5, 0.2,0.098+tambah,0.2);
DrawAQuad(.0, .0 +tambah, .0,5 , 0.2+tambah,0.098,0.2);
DrawAQuad(.0 , .0 - tambah, .0, 5, 0.2+tambah,0.098+tambah,0.2);
DrawAQuad(.0, .0, .0 + tambah, 5, 0.2,0.098+tambah,0.2+tambah);
DrawAQuad(.0, .0, .0 - tambah, 5, 0.2+tambah,0.098+tambah,0.2+tambah);
tambah += nilai;
hitung += nilai_int;

if(hitung == batas){
    nilai_int = -(nilai_int);
    nilai = -(nilai);
    batas = -(batas);
}

kode diatas akan menggambar keenam kubus dan memberi animasi pada setiap kubus.

oleh : Alvin
READ MORE - Pemrograman OpenGL sederhana pada Linux
Add to Technorati Favorites Add to Technorati Favorites
OrangUNIX © 2008 Template by:
SkinCorner