Anda di halaman 1dari 15

LAPORAN RESMI

PRAKTIKUM KOMPUTER GRAFIK


MODUL 1
PRIMITIF DRAWING



Disusun Oleh :














LABORATORIUM TEKNOLOGI INFORMASI DAN
APLIKASI
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2012 / 2013
Disetujui : .....././../Bangkalan




(SUDIYANTO)
10.04.111.00075
TGL PRAKTIKUM : 20 MARET 2013
NAMA : PYEPIT RINEKSO A
NRP : 110411100047
KELAS : A/1
DOSEN PENGAMPU : YONATHAN FERRY H, S.T., M.I.T.
ASISTEN : SUDIYANTO
BAB I
PENDAHULUAN

1.1 Latar Belakang
Dalam dunia saat ini komputer grafik menunjukkan kemajuann yang sangat
pesat. Berbagai bidang saat ini banyak yang memanfaatkan teknologi ini. Seperti
kedokteran, bisnis, industri, seni, hiburan, iklan dan lain-lain. OpenGL adalah
salah satu tools pembuatan aplikasi grafik. Pada modul 1 ini akan mempelajari
bagaimana membuat gambar primitif menggunakan OpenGL.

1.2 Tujuan
Adapun tujuan dari praktikum ini adalah:
1. Praktikan mampu memahami dan menerapakan aplikasi komputer
grafik menggunakan OpenGL.
2. Praktikan memahami dan mengerti dalam membuat gambar primitif.
3. Praktikan dapat membuat gambar primitif dengan baik and benar.
BAB II
DASAR TEORI

2.1 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 :
o Titik
o Garis
o Segitiga
o 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
2.2 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);
/* gambar 5 titik di layar */
glColor3f (1.0, 1.0, 0.0);

/* posisi vertex */
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.
BAB III
TUGAS PENDAHULUAN

3.1 Prepraktikum
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!

3.2 Jawaban Prepraktikum
1. OpenGL adalah perangkat lunak pembuat grafik yang digunakan untuk
keperluan pemrograman grafik. OpenGL bersifat opensource,
multiplatform, dan multilanguage. OpenGL Dikembangkan oleh Silicon
Graphics yang awalnya berupa GL (Glut Library). Pendiri openGL adalah
SGI, Digital Equepment Corporation, IBM, Intel dan Microsoft, pada
tanggal 1 juli 1992 OpenGL versi 1.0 diperkenalkan.
2. Contoh software yang menggunakan fitur openGL yaitu 3D Google
Sketchup dan CSO Wallhack.
3. glBegin() digunakan untuk memulai suatu sub perintah. Untuk membuat
sebuah gambar kita memerlukan titik, garis, atau bidang datar. Perintah
tersebut disisipkan diantara tanda kurung pada glBegin.
Contoh: glBegin(GL_LINES) untuk membuat garis, sedangkan
glEnd() digunakan untuk mengakhiri suatu perintah.
4. Vertex merupakan acuan dasar untuk membuat suatu objek berupa titik.
Contoh : 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);
BAB IV
PEMBAHASAN

4.1 Kegiatan Praktikum
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.

4.2 Jawban Kegiatan Praktikum
1. Gambar yang dihasilkan dari
(GL_POINTS); (GL_LINE_STRIP); (GL_LINE_LOOP);





(GL_LINES); (GL_TRIANGLES); (GL_TRIANGLE_FAN);






(GL_TRIANGLE_STRIP); (GL_QUADS); (GL_QUAD_STRIP);





(GL_POLYGON);






2. Pada percobaan ini menggunakan glBegin(GL_POLYGON);

glBegin(GL_POLYGON);
glColor3f (1.0, 0.0, 0.0);
glVertex3f (0.0, 0.0, 0.0);
glColor3f (0.0, 1.0, 0.0);
glVertex3f (0.0, 0.8, 0.0);
glColor3f (0.0, 0.0, 1.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glColor3f (1.0, 1.0, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}
3. glPointSize(x);
glPointSize(10);
glBegin(GL_POINTS);

glColor3f (1.0, 0.0, 0.0);
glVertex3f (0.0, 0.0, 0.0);
glColor3f (0.0, 1.0, 0.0);
glVertex3f (0.0, 0.8, 0.0);
glColor3f (0.0, 0.0, 1.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glColor3f (1.0, 1.0, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}

glLineWidth(x);
glLineWidth(5);
glBegin(GL_LINES);

glColor3f (1.0, 0.0, 0.0);
glVertex3f (0.0, 0.0, 0.0);
glColor3f (0.0, 1.0, 0.0);
glVertex3f (0.0, 0.8, 0.0);
glColor3f (0.0, 0.0, 1.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glColor3f (1.0, 1.0, 0.0);
glVertex3f (-0.8, 0.0, 0.0);
glEnd();
glFlush ();
}

4.3 Tugas Praktikum
1. Cobalah program diatas lakukan percobaan sesuai dengan perintah diatas.
2. Buat Pelangi horisontal yang terdiri dari 7 warna menggunakan
GL_POLYGON.
3. Buat Pelangi vertikal yang terdiri dari 7 warna menggunakan
GL_POLYGON.
4. Ulang soal nomor 3 dan 4 menggunakan glRect().

4.4 Jawaban Tugas Praktikum
1. Seperti yang ada pada kegiatan praktikum.
2. Pelangi horizontal
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);

/* posisi vertex */
glBegin(GL_POLYGON);
glColor3f (1.0, 0.0, 0.0);
glVertex3f (-1.0, -1.0, 0.0);
glVertex3f (1.0, -1.0, 0.0);
glColor3f (1.0, 0.5, 0.0);
glVertex3f (1.0, -0.75, 0.0);
glVertex3f (-1.0, -0.75, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (1.0, 0.5, 0.0);
glVertex3f (-1.0, -0.75, 0.0);
glVertex3f (1.0, -0.75, 0.0);
glColor3f (1.0, 1.0, 0.0);
glVertex3f (1.0, -0.5, 0.0);
glVertex3f (-1.0, -0.5, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (1.0, 1.0, 0.0);
glVertex3f (-1.0, -0.5, 0.0);
glVertex3f (1.0, -0.5, 0.0);
glColor3f (0.0, 1.0, 0.0);
glVertex3f (1.0, -0.25, 0.0);
glVertex3f (-1.0, -0.25, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (0.0, 1.0, 0.0);
glVertex3f (-1.0, -0.25, 0.0);
glVertex3f (1.0, -0.25, 0.0);
glColor3f (0.0, 0.0, 1.0);
glVertex3f (1.0, 0.25, 0.0);
glVertex3f (-1.0, 0.25, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (0.0, 0.0, 1.0);
glVertex3f (-1.0, 0.25, 1.0);
glVertex3f (1.0, 0.25, 0.0);
glColor3f (1.0, 0.0, 0.5);
glVertex3f (1.0, 0.5, 0.0);
glVertex3f (-1.0, 0.5, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (1.0, 0.0, 0.5);
glVertex3f (-1.0, 0.5, 0.0);
glVertex3f (1.0, 0.5, 0.0);
glColor3f (1.0, 0.0, 1.0);
glVertex3f (1.0, 0.75, 0.0);
glVertex3f (-1.0, 0.75, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (1.0, 0.0, 1.0);
glVertex3f (-1.0, 0.75, 0.0);
glVertex3f (1.0, 0.75, 0.0);
glVertex3f (1.0, 1.0, 0.0);
glVertex3f (-1.0, 1.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;
}
Gambar Pelangi Horizontal








3. Pelangi Verttikal
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);

/* posisi vertex */
glBegin(GL_POLYGON);
glColor3f (1.0, 0.0, 0.0);
glVertex3f (-1.0, -1.0, 0.0);
glVertex3f (-1.0, 1.0, 0.0);
glColor3f (1.0, 0.5, 0.0);
glVertex3f (-0.75, 1.0, 0.0);
glVertex3f (-0.75, -1.0, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (1.0, 0.5, 0.0);
glVertex3f (-0.75, -1.0, 0.0);
glVertex3f (-0.75, 1.0, 0.0);
glColor3f (1.0, 1.0, 0.0);
glVertex3f (-0.5, 1.0, 0.0);
glVertex3f (-0.5, -1.0, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (1.0, 1.0, 0.0);
glVertex3f (-0.5, -1.0, 0.0);
glVertex3f (-0.5, 1.0, 0.0);
glColor3f (0.0, 1.0, 0.0);
glVertex3f (-0.25, 1.0, 0.0);
glVertex3f (-0.25, -1.0, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (0.0, 1.0, 0.0);
glVertex3f (-0.25, -1.0, 0.0);
glVertex3f (-0.25, 1.0, 0.0);
glColor3f (0.0, 0.0, 1.0);
glVertex3f (0.25, 1.0, 0.0);
glVertex3f (0.25, -1.0, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (0.0, 0.0, 1.0);
glVertex3f (0.25, -1.0, 0.0);
glVertex3f (0.25, 1.0, 0.0);
glColor3f (1.0, 0.0, 0.5);
glVertex3f (0.5, 1.0, 0.0);
glVertex3f (0.5, -1.0, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (1.0, 0.0, 0.5);
glVertex3f (0.5, -1.0, 0.0);
glVertex3f (0.5, 1.0, 0.0);
glColor3f (1.0, 0.0, 1.0);
glVertex3f (0.75, 1.0, 0.0);
glVertex3f (0.75, -1.0, 0.0);
glEnd();

glBegin(GL_POLYGON);
glColor3f (1.0, 0.0, 1.0);
glVertex3f (0.75, -1.0, 0.0);
glVertex3f (0.75, 1.0, 0.0);
glVertex3f (1.0, 1.0, 0.0);
glVertex3f (1.0, -1.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;
}
Gambar Pelangi Vertikal








4. Pelangi Horizontal Menggunakan gl(Rect);
glBegin(GL_POLYGON);
glEnd();
glColor3f (1.0, 0.0, 0.0);
glRectf (-1, -1, 1, -0.75);
glColor3f (1.0, 0.5, 0.0);
glRectf (-1, -0.75, 1, -0.5);
glColor3f (1.0, 1.0, 0.0);
glRectf (-1, -0.5, 1, -0.25);
glColor3f (0.0, 1.0, 0.0);
glRectf (-1, -0.25, 1, 0.25);
glColor3f (0.0, 0.0, 1.0);
glRectf (-1, 0.25, 1, 0.5);
glColor3f (1.0, 0.0, 0.5);
glRectf (-1, 0.5, 1, 0.75);
glColor3f (1.0, 0.0, 1.0);
glRectf (-1, 0.75, 1, 1);

glFlush ();
}

Pelangi Vertikal Menggunakan gl(Rect);
glBegin(GL_POLYGON);
glEnd();
glColor3f (1.0, 0.0, 0.0);
glRectf (-1, -1, -0.75, 1);
glColor3f (1.0, 0.5, 0.0);
glRectf (-0.75, -1, -0.5 ,
1);
glColor3f (1.0, 1.0, 0.0);
glRectf (-0.5, -1, -0.25, 1);
glColor3f (0.0, 1.0, 0.0);
glRectf (-0.25, -1, 0.25, 1);
glColor3f (0.0, 0.0, 1.0);
glRectf (0.25, -1, 0.5, 1);
glColor3f (1.0, 0.0, 0.5);
glRectf (0.5, -1, 0.75, 1);
glColor3f (1.0, 0.0, 1.0);
glRectf (0.75, -1, 1, 1);

glFlush ();
}



BAB V
PENUTUP

5.1 Kesimpulan
OpenGL adalah perangkat lunak pembuat grafik yang digunakan untuk
keperluan pemrograman grafik. OpenGL memiliki beberapa obyek dasar yang
disebut primitif. Gambar-gambar kompleks dibuat dari kombinasi obyek-obyek
primitif ini, seperti Titik, Garis, Segitiga, Polygon.
Untuk memulai suatu sub perintah yaitu menggunakan glBegin(). Untuk
membuat sebuah gambar kita memerlukan titik, garis, atau bidang datar. Perintah
tersebut disisipkan diantara tanda kurung pada glBegin.
Contoh: glBegin(GL_LINES) untuk membuat garis, sedangkan glEnd()
digunakan untuk mengakhiri suatu perintah.
Vertex merupakan acuan dasar untuk membuat suatu objek berupa titik.
Contoh : 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);

5.2 Saran
Untuk asisten agar dapat mendampingi praktikan ketika praktikum
dimulai.