Modul 1
Primitif Drawing
I. Tugas Pendahuluan
1. Jelaskan secara singkat sejarah
OpenGL!
2. Sebutkan beberapa contoh software
yang menggunakan OpenGL!
3. Apa guna glBegin() dan glEnd()?
4. Jelaskan apa itu vertex!
II. Pengantar
Komputer grafik telah
menunjukkan kemajuan yang pesat dari berbagai sisi: algoritma, software, dan
hardware. Cakupannya juga telah meluas ke berbagai bidang: kedokteran, sains,
engineering, bisnis, industri, seni, hiburan, iklan, dan lain-lain.
Salah satu
tools/library pembuatan aplikasi grafik adalah OpenGL (Open Graphics Library).
OpenGL adalah suatu standar grafik yang menyediakan fungsi-fungsi low-level untuk
pembuatan berbagai gambar pada komputer.
Sebagai API (Application Programming Interface),
OpenGL bersifat platform-independent/tidak tergantung pada piranti dan platform
yang digunakan. Hal inilah yang membuat OpenGL dapat berjalan pada berbagai sistem
operasi: Windows, UNIX, Mac, Android, dll. OpenGL pada awalnya didesain untuk
digunakan oleh bahasa pemrograman C/C++, namun dalam perkembangannya OpenGL
dapat juga digunakan oleh bahasa pemrograman yang lain seperti Java, Tcl, Ada,
Visual Basic, Delphi, maupun Fortran.
Primitif Drawing
OpenGL memiliki beberapa
obyek dasar yang disebut primitif. Gambar-gambar kompleks dibuat dari kombinasi
obyek-obyek primitif ini. Primitif mudah digambar pada layar monitor karena menggunakan
persamaan geometrik sederhana. Contoh primitif / grafik dasar adalah :
·
Titik
·
Garis
·
Segitiga
·
Polygon
Perintah
OpenGL
OpenGL memiliki daftar fungsi
yang banyak. Untuk saat ini, praktikan hanya perlu fokus pada beberapa perintah
dasar yang tertera pada tabel berikut ini:
Tabel 1.1 Perintah dasar OpenGL
III. Program
Berikut ini adalah program yang menggambar
obyek primitif.
void display(void)
{
/* bersihkan layar dari titik pixel yang masih ada */
glClear
(GL_COLOR_BUFFER_BIT);
glColor3f
(1.0, 1.0, 0.0);
/* gambar 5 titik di layar */
glBegin(GL_POINTS);
glVertex3f
(0.0, 0.0, 0.0);
glVertex3f
(0.0, 0.8, 0.0);
glVertex3f
(0.8, 0.0, 0.0);
glVertex3f
(0.0, -0.8, 0.0);
glVertex3f
(-0.8, 0.0, 0.0);
glEnd();
glFlush
();
}
void kunci(unsigned char key, int
x, int y)
{
switch
(key)
{
/* aplikasi berhenti ketika tombol q ditekan */
case 27 :
case 'q':
exit(0);
break;
}
glutPostRedisplay();
}
int main(int
argc, char *argv[])
{
glutInitWindowSize(400,400);
glutInitWindowPosition(100,100);
glutInitDisplayMode(GLUT_RGB
| GLUT_SINGLE);
glutCreateWindow("Primitif");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return
0;
}
|
Program 1.1 Menggambar 5 titik
Program diatas jika dijalankan akan
menampilkan 5 titik berwarna kuning pada latar belakang hitam. Posisi titik
didefinisikan pada tiap pemanggilan glVertex3f. Ukuran window mengambil nilai
default yang disediakan oleh OpenGL: (-1,-1) untuk titik kiri bawah dan (1, 1)
untuk titik kanan atas.
Yang perlu diperhatikan di
codeblocks, tiap kali user membuat project baru, library yang diperlukan harus
ditambahkan.
IV. Percobaan
1.
Gantilah
sintak program yang berwarna merah bold untuk membuat berbagai macam primitive
drawing. Lakukan pengamatan apa yang terjadi
glBegin(GL_POINTS);
glBegin(GL_LINE_STRIP);
glBegin(GL_LINE_LOOP);
glBegin(GL_LINES);
glBegin(GL_TRIANGLES);
glBegin(GL_TRIANGLE_FAN);
glBegin(GL_TRIANGLE_STRIP);
glBegin(GL_QUADS);
glBegin(GL_QUAD_STRIP);
glBegin(GL_POLYGON);
2. Lakukan penyisipan glColor3f (X, X, X); pada
tiap vertex, kemudian amati lagi apa yang terjadi.
3. Lakukan pengaturan ketebalan titik dan garis
dengan perintah glPointSize(x); dan glLineWidth(x); kemudian
amati apa pengaruhnya terhadap titik dan garis.
V. Tugas
1. Lakukan
percobaan sesuai dengan perintah diatas.
2. Buat Checker
board (papan catur) yang berukuran 2 x 2 cell (total ada 4 kotak) dan terdiri
dari 2 warna berbeda! Warna terserah.
3. Buat 1 huruf
vokal (A, E, I, O, U). Koordinasikan dengan asisten praktikum sehingga dalam 1
kelompok praktikum tidak ada yang mengerjakan huruf yang sama.
4. Ulang soal
nomor 3 dan 4 menggunakan glRect().