Sekarang mari sedikit berbicara mengenai komputer Grafik.. sudah banyak yang tau si, cuma lumayanlah buat bantu" tugas agan diperkuliahan... berikut ane udah nyimpulin apa itu OPENGL dan GLUT.. Cekidot aja gan.. mudah"an membantu... n_n
OpenGL
adalah suatu spefikasi grafik yang low-level yang menyediakan fungsi untuk
pembuatan grafik primitif termasuk titik, garis, dan lingkaran. OpenGL
digunakan untuk keperluan-keperluan pemrograman grfis.OpenGL bersifat
Open-Source, multi-platform dan multi-language serta digunakan mendefinisikan
suatu objek, baik objek 2 dimensi maupun objek 3 dimensi. OpenGL juga merupakan
suatu antarmuka pemrograman aplikasi (application programming interface (API)
yang tidak tergantung pada piranti dan platform yang digunakan, sehingga OpenGL
dapat berjalan pada sistem operasi Windows, UNIX dan sistem operasi lainnya.
OpenGL
pada awalnya didesain untuk digunakan pada bahasa pemrograman C/C++, namun
dalam perkembangannya OpenGL dapat juga digunakan dalam bahasa pemrograman yang
lain seperti Java, Tcl, Ada, Visual Basic, Delphi, maupun Fortran. Namun OpenGL
di-package secara berbeda-beda sesuai dengan bahasa pemrograman yang digunakan.
Oleh karena itu, package OpenGL tersebut dapat di-download pada situs
http://www.opengl.org sesuai dengan bahasa pemrograman yang akan digunakan.
Opengl
melayani dua tujuan :
Untuk
menyembunyikan kompleksitas dari interfacing dengan berbagai 3D accelerators,
memamerkan oleh programmer dengan satu, seragam API.
Untuk
menyembunyikan kemampuan yang berbeda dari hardware platform, oleh semua yang
memerlukan mendukung implementasi penuh fitur opengl set (menggunakan software
emulation jika diperlukan).
Pendahulu
openGL adalah IRIS GL dari Silicon Grapics.Padamulanya adalah library grafis
2D,yang berefolusi menjasi API program 3D untuk workstation canggih milik
perusahaan tersebut.
OpenGL
adalah hasil dari usaha SGI untuk mengembangkan dan meningkatkan kemampuan
portable IRIS.API grafis yang baru akan menawarkan kemampuan IRIS GL tetapi
dengan standar yang lebih terbuka,dengan input dari pembuatan hardware lain dan
sistem operasi lain,dan akn memudahkan adaptasi ke hardware platform dan sistem
operasi lain.
Untuk
lebih mempopulerkan openGL SGI mengijinkan pihak lain untuk mengembangkan
standart openGL,dan beberapa vendor menyambut hal tersebut dengan membentuk
OpenGL Architecture Review Board (ARB) Pendiri openGL adalah SGI,Digital
Equepment Corporation,IBM,Intel dan Microsoft,pada tanggal 1 juli 1992 OpenGL
versi 1.0 diperkenalkan.
Letak
openGL dalam aplikasi gambar di atas pada umumnya ketika aplikasi berjalan
program tersebut memanggil banyak fungsi,beberapa yang dibuat oleh programer
dan beberapa yang disediakan oleh sistem operasi bahasa pemrograman.Aplikasi
windows membuat output pada layar biasanya dengan memanggil sebual API windows
yang disebut Graphics Devise Interfase,yang memungkinkan sebagai penulisan teks
pada sebuah windows,menggambar garis 2D sederhana dan lainnya.Implementasi dari
openGL mengambil permintaan grafis dari aplikasi dan membangun sebuah gambar
berwarna dari grafis 3D,kemudian memberikan gambar tersebut ke GDI untuk
ditampilkan pada layar monitor.
OpenGL
lebih mengarah pada prosedural daripada sebuah deskriptif API grafis.Untuk
mendeskripsikan scene dan bagaimana penampilannya,sebenarnya programer lebih
tau untuk menentukan hal-hal yang dibutuhkan untuk menghasilkan efek yang di
inginkan.Langkah tersebut termasuk memanggil banyak perintah openGL,perintah
tersebut digunakan untuk menggambarkan grafis primitif seperti titik,garis dan
poligon dalam tiga dimensi.
Sebagai
tambahan,openGl mendukung lighting, shading ,texture mapping, blending,
transparancy, dan banyak kemampuan efek khusus lainnya.
OpenGL
mempunyai bnayak fungsi dan penggunaan perintah yang sangat luas, penggunaan
openGL membutuhkan library tambahan yang harus di letakkan pada direktory
system dari windows (OS),yaitu :
OpenGL32.dll, Glu32.dll, Glut32.dll
Inti
dari tahapan ini adalah mengatur view port dan persepektif untuk penampilan
obyek
ke dalam layar monitor,viewport adalah besarnya layar monitor(image) yang
dipakai untuk menampilkanobyek,sedangkan persepektif yang dimaksud adalah
pengaturan sumbu z dalam penampilan obyek 3 dimensi,sehingga user dapat melihat
obyek seolah-olah dalam bidang 3 dimensi (X-Y-Z),selain itu penggambaran obyek
yang dilakukan oleh programer juga dapat menggunaan koordinat 3 dimensi. Selain
ke dua tujuan di atas pada tahap ini juga dilakukan koneksi awal dengan library
openGL, koneksi ini dilakukan supaya fungsi-fungsi yang di sediakan openGL
dapat digunakan.Funsi/prosedur yang digunakan :
LoadGlut(‘glut32.dll)
- pemanggilan library openGL
InitGL
– inisialisasi openGL awal yang harus dilakukan
glViewport
– untuk pengaturan viewport
glMatrixMode
– pengaturan viewport
gluPerspective
– pengaturan persepektif
Contoh
script untuk inisialisasi openGL :
Try
LoadGlut(‘glut32.dll’);
InitGL;
Exept on e := exeption do
Begin
messageDlg{e.message,mtError,[mbOk],};
Halt {1};
End;
End;
Script
di atas merupakan script yang paling sederhana, dalam artian minimal diperlukan
untuk menginisialisasi penggunaan openGL.Fungsi-fungsi lain seperti yang
disebut diatas seperti glViewport,glMatrixMode,dapat di tambah kan pada script
sesuai dengan kebutuhan.
Didalam
openGL pembuatan obyek dilakukan dengan titik-titik 3 dimensi,dengan mode
GL_QUARDS, maka otomatis setiap 4 titik digambar menjadi sebuah bidang segi empat,sedangkan
mode GL_LINES, pada setiap 2 titik digambar manjadi sebuah garis.Di dalam tahap
ini setiap garis atau bidang juga dapat di atur warnanya. Fungsi atau prosedur
yang digunakan :
mode
GL_QUARDS – menggambarkan segi empat
mode
GL_LINES – menggambark garis
glVertex3f-
penentuan titik 3 dimensi
glColor3f
– penentuan warna
Contoh pembuatan titik 3 warna :
glClearColor(1,1,1,0);
//warna dasar ;1,1,1,0 adalah putih
glBegin(GL_POINTS);
//untuk membuat titik
glColor3f(1,0,0);
//penentuan warna titik 1 dan posisinya
glVertex3f(-0.1,-0.1,0.1);
glColor3f(0,1,0);
//penentuan warna titik 2 dan posisisya
glVertex3f(0.1,-0.1,0.1);
glColor3f(0,0,1);
//penentuan titik 3 dan posisinya
glColor3f(0,0.1,-0.1);
glEnd;
Contoh pembuatan garis :
glClearColor(1,1,1,0);
// warna background putih
glColor3f(0,0,0);
// warna garis hitam
glBegin(GL_LINES);
//digunakan untuk membua garis tiap 2 titik yang ada
glVertex3f(0,0,-0.1);
//garis 1
glVertex3f(0.3,0.2,0.1);
glVertex3f(0.1,-0.1,-0.2);
// garis 2
glVertex3f(0.3,-0.2,0.1);
glEnd;
Contoh pembuatan bidang segi empat :
glClearColor(1,1,1,0);
// warna background putih
glBegin(GL_QUARDS);
//untuk membuat segi empat dalam tiap4 titik
glColor3f(1,0,0);
//posisi titik 1 dengan gradiasi warnanya
glVertex3f(-0.2,0.2,0.2);
glColor3f(1,0,0);
//posisi titik 2 dengan gradiasi warnanya
glVertex3f(0.2,0.2,0.2);
glColor3f(1,0,1);
//posisi titik 3 dengan gradiasi warnanya
glVertex3f(0.2,-0.2,0.2);
glColor3f(0,1,1);
//posisi titik 4 dengan gradiasi warnanya
glVertex3f(-0.2,-0.2,0.2);
glEnd;
Selain
OpenGL ada juga tools/library grafik yang dapat dipergunakan yaitu DirectX. Namun tools ini hanya dapat
dipergunakan pada Microsoft Windows. Masing-masing perintah atau fungsi dalam
OpenGL mempunyai struktur dan format yang sama.
Dikarenakan OpenGL tidak menyediakan interface sistem
window ataupun input, maka untuk tujuan ini aplikasi harus mengunakan
keseragaman spesifik platform. Dengan demikian jika aplikasi yang diinginkan
tidak hanya berjalan di satu platfrom saja, maka perlu menggunakan GLUT
GLUT merupakan pengembangan dari OpenGL yang didesain
untuk aplikasi dengan level kecil hingga menengah dan menggunkan callback
function untuk menambahkan interaksi dari user. GLUT menyediakan interface
untuk menejemen window, menu, dan peralatan input (keyboard, dan mouse). GLUT
juga menyediakan fungsi otomatis untuk menggambar objek primitif (garis,
lingkaran, titik, persegi),objek 3 dimensi wire (kerangka) maupun yang solid,
seperti cube (kubus), sphere (bola), dan teapot (poci teh), cone (kerucut),
torus, dan lain-lain .
GLUT dikembangkan oleh Mark Kilgard, yaitu penulis
OpenGL Programming for the X Window System dan The Cg
Tutorial: The Definitive Guide to Programmable Real-Time Graphics, ketika
dia masih bekerja di Silicon Graphics.
Dua tujuan GLUT ialah menciptakan fleksibitas code
antar platform yang dapat dijalankan lebih dari satu sistem operasi (Windows,
Linux, Mac OS X, FreeBSD, OpenBSD, NetBSD), dan untuk lebih mudah mempelajari
OpenGL. Dengan menggunakan GLUT hanya memerlukan sedikit code dibandingkan
dengan OpenGL, tanpa mengetahui spesifikasi sistem operasi, dikarenakan OpenGL
adalah sebagai mesin.
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.
Untuk pemrograman OpenGL menggunakan C++,
diperlukan library tambahan yaitu :
1. glut.h yang
dicopy ke drive:\Program Files\Microsoft Visual Studio 2010\Vc\include\GL
2. glut32.lib yang
dicopy ke drive:\Program Files\Microsoft Visual Studio 2010\Vc\lib
3. glut32.dll yang
dicopy ke drive:\Windows\System
Ada 5 fungsi yang harus dipanggil untuk melakukan
instalansi window yaitu:
a.
glutInit(int argc,char**argv)
Fungsi ini menginisialisasi glut dan memproses
argument command_line yg disertakan(jika ada). Fungsi ini harus di panggil
pertama kali sebelum pemanggilan terhadap fungsi-fungsi yang lain.
b.
glutInitDisplayMode(unsigned intmode)
Fungsi ini digunakan untuk menentukan apakah akan
menggunakan model pewarnaan RGBA atau indek warna. Dengan fungsi ini juga bisa
menentukan apakah akan menggunakan windows buffer single atau double.
c.
GlutInitWindowPosisition(int.x,int.y)
Fungsi ini menentukan letak window dengan patokkannya
ialah pada window kiri atas.
d.
glutInitWindowSize(int width,int height)
fungsi ini menspesifikasikan ukuran window yang dibuat
dalam pixel.
e.
glutCreateWindow(char *string)
fungsi untuk membuat window dalam konteks openGL, dan
akan menghasilkan identitas atau judul window tersebut.
Display Callback
1. glutDisplayFunc(void(*func)(void))
Fungsi ini memanggil fungsi lain yg menentukan konten
dari windows yg telah di buat sebelumnya.
2. glutPostRedisplay(void)
Untuk mengubah konten window
3. glutMainLoop(void)
Fungsi untuk event perulangan, display pada
callback akan terus ditampilkan selama aplikasi itu tidak ditutup