Laporan ini membahas tentang praktikum grafika komputer mata kuliah modul I yang berjudul "Primitive Drawing". Laporan ini menjelaskan tentang penggunaan primitif dasar seperti titik, garis, segiempat, lingkaran, dan teks untuk membuat gambar digital 2D dan 3D menggunakan OpenGL.
1. LAPORAN RESMI
PRAKTIKUM GRAFIKA KOMPUTER
MODUL I
“Primitive Drawing”
Disusun Oleh :
LABORATORIUM MICROTEACHING DAN KOMPUTER
JURUSAN PENDIDIKAN INFORMATIKA
FAKULTAS KEGURUAN DAN ILMU PENDIDIKAN
UNIVERSITAS TRUNOJOYO MADURA
T.A. 2014-2015
Disetujui : Bangkalan, …………………
(AGUS PRIYONO)
12.04.111.00056
TANGGAL PRAKTIKUM : SENIN, 30 MARET 2015
NAMA : AINUN NAJIB
NRP : 130631100018
KELAS : A1
DOSEN PENGAMPU : MEDIKA RISNASARI, MT.
2. BAB I
PENDAHULUAN
1.1 Latar Belakang
Seiring dengan perkembangan teknologi infomasi dan komunikasi, yang lebih
familiar dikalangan bangsa yaitu computer, dari perkembangan tersbut terdapat
pula istilah Computer Graphic.
Computer Graphic ialah bagian ilmu computer yang berkaitan dengan
pembuatan visual, gambar, animasi atau pun game sederhana secara digital. Oleh
karena itu perkembangan ini sangat berperan aktif di kalangan informatika selain
itu juga hal ini yang menunjang sekali seperti hal di iklan, dunia film dan
semuanya.
Dalam pemanfaatan komputer grafik untuk manipulasi obyek, ada dua jenis
obyek yang bisa dimodelkan, yaitu obyek sederhana dan obyek kompleks. Obyek
sederhana dimodelkan dengan menggunakan persamaan geometri, sedangkan
obyek kompleks dimodelkan dengan merangkai banyak segitiga menjadi satu
kesatuan obyek. Obyek sederhana mudah dimodelkan tetapi bentuk yang
dihasilkan kurang bervariasi.
Sedangkan obyek kompleks lebih sulit dimodelkan tetapi bentuknya sangat
bervariasi. Untuk memodelkan obyek dengan cukup mudah dan bentuk bisa
bervariasi, biasanya digunakan gabungan dari obyek sederhana dan obyek
kompleks. Untuk menghasilkan bentuk permukaan yang lebih bervariasi, dapat
digunakan kurva bezier. Bahasa pemograman C/C++, Delphi pun juga dapat
digunakan.
Penggunaan bahasa pemrograman tersebut harus didukungan dengan IDE toll
untuk menjalankan atau untuk memudahkan user berkomunikasi dengan komputer
seperti OpenGL.
Namun, sebagian orang mengira OpenGL itu sebuah bahasa pemrograman,
itu salah OpenGL (Open Graphic Library) adalah sebuah library terdiri dari
berbagai macam fungsi dan biasanya digunakan untuk menggambar sebuah objek
2D ata 3D.
Tapi bukan berarti OpenGL adalah satu-satunya aplikasi render, pesaing
3. OpenGL directX (keluaran microsoft) memiliki fungsi yang hampir sama, namun
DirectX lebih banyak digunakan oleh sebagian besar game developer karena
beberapa fungsi DirectX nampaknya lebih memudahkan game developer untuk
membuat game. Tapi bukan berarti tidak ada yang memakai OpenGL, tiap-tiap
render memiliki kelebihan dan kekurangannya tersendiri. OpenGL biasanya
digunakan dengan bahasa pemrograman C/C+.
1.2 Tujuan
- Mahasiswa mampu membuat dan memanfaatkan output primitif (titik,
garis, segi empat, kurva, lingkaran, elips, fill area, dan teks).
- Mahasiswa mampu memahami dan mengerti apa itu OpenGL, CodeBlock
dan apa itu computer graphic.
- Mahasiswa memahami, mengerti fungsi dari computer graphic itu sendiri
dan mampu mengeplorasi kepada orang lain
4. BAB II
DASAR TEORI
2.1 TEORI
Penghasilan citra pada komputer grafik menggunakan primitif grafik dasar.
Primitif ini memudahkan untuk merender (menggambar pada ayar monitor)
sebagaimana penggunaan persamaan geometrik sederhana. Contoh primitif grafik
dasar (Gambar 1) adalah :
Titik
Garis, Segiempat
Kurva, Lingkaran, ellipse, kurva bezier, kurva lainnya
Fill area
Text
Segita
Gambar: 1. Primitif Drawing
Obyek kompleks dapat dibuat dengan kombinasi dari primitif ini. Adapun
contoh grafik primitif yang lain adalah :
- Poligaris yaitu urutan garis lurus yang saling terhubung.
- Teks adalah bentuk bahasa tulisan dengan simbol-simbol tertentu. Teks
merupakan kumpulan lebih dari dua karakter.
- Citra raster adalah gambar yang dibuat dengan piksel yang membedakan
bayangan dan warna. Citra raster disimpan dalam komputer sebagai larik
bernilai numerik. Larik tersebut dikenal sebagai piksel map atau bitmap.
Ada tiga cara untuk menghasilkan citra grafik yaitu citra didisain dengan
5. tangan, citra yang didapat dari perhitungan dan citra yang discan.
Pemaparan citra raster dinyatakan oleh piksel dengan video displays
(Cathod-ray Tube CRT), flat panel displays (LCD), hardcopy (printer
laser, dot matrix printers, ink-jet printers). Contoh proses pemaparan
permukaan adalah citra yang ditangkap lalu disimpan di frame buffer,
kemudian digunakan untuk mewarnai sebuah titik pada permukaan
pemapar. Selanjutnya proses scan di CRT. Frame buffer adalah matriks 2
dimensi yang mewakili piksel pada pemapar. Ukuran matriks harus cukup
untuk menyimpan kedalam warna pemapar untuk semua piksel. Sebagai
contoh pemapar (monitor) berresolusi 1280 x 1024 mempunya kedalaman
warna 24 bit (~16 juta warna) membutuhkan ruang simpan sekitar 4 Mb.
- Piksel dan Bitmap. Jumlah bit yang digunakan untuk mewakili
warna/bayangan dari masing-masing piksel (picture element = pixel). 4
bit/piksel = 24 = 16 level abu-abu.
7. glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-10.0,10.0,10.0,-10.0); // untuk
ukuran coordinat x, y
glMatrixMode(GL_MODELVIEW);
glClearColor(1.0,0.0,0.0,1.0);
/* menentukan intensitas warna RGB = terakhir
glColor3f(0.0,0.0,1.0);
}
int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(300,300); // ukuran
besarnya resolusi
glutInitWindowPosition(100,100); // untuk
posisi windows
glutCreateWindow("Segitiga Warna");
glutDisplayFunc(display);
myinit();
glutMainLoop();
return 0;
}
#include <windows.h>
#include <GL/gl.h>
#include <GL/glut.h>
void display(void)
{
/* bersihkan layar dari titik pixel yang masih
ada */
8. glClear (GL_COLOR_BUFFER_BIT);
/* gambar poligon (rectangle) dengan titik sudut *
* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */
glColor3f (1.0, 1.0, 0.0);
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)
{
case 27 :
case 'q':
exit(0);
break;
}
glutPostRedisplay();
}
int main(int argc, char *argv[])
{
glutInitWindowSize(200,200);
glutInitWindowPosition(100,100);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutCreateWindow("Suprapto");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return 0;
}
9. 1. Gantilah sintak program yang berwarna merah bold untuk membuat
berbagai macam primitive drawing seperti sintak dibawah ini. Lakukan
pengamatan apa yang terjadi ? dan bagaimana hasilnya?
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 vertek, kemudian
amati lagi apa yang terjadi?
3. Lakukan pengaturan ketebalan titik dan garis dengan perintah
glPointSize(x); dan glLineWidth(x); kemudian amati apa yang terjadi?
glPointSize(20) glLineWidht(20)
10. 3.2 TUGAS
1. glBEGIN (GL_LINE_LOOP)
#include <windows.h>
#include <GL/gl.h>
#include <GL/glut.h>
void display(void){
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_COLOR_BUFFER_BIT);
/*gambar poligon (rectangle) dengan titik sudut *
* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_LINE_LOOP);
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)
{
case 27 :
case 'q':
exit(0);
break;
}
glutPostRedisplay();
}
int main(int argc, char *argv[]){
glutInitWindowSize(300,300);
glutInitWindowPosition(200,200);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutCreateWindow("Suprapto");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return 0;
}
11. 2. glBEGIN (GL_POINTS)
void display(void){
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_COLOR_BUFFER_BIT);
/*gambar poligon (rectangle) dengan titik sudut *
* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */
glColor3f (1.0, 1.0, 1.0);
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 ();
}
12. 3. glBegin(GL_LINE_STRIP);
void display(void){
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_LINE_STRIP);
/*gambar poligon (rectangle) dengan titik sudut *
* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */
glColor3f (0.0, 1.0, 0.0);
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 ();
}
13. 4. glBegin(GL_LINES);
void display(void){
/* bersihkan layar dari titik pixel yang masih ada */
glClear (GL_LINES);
/*gambar poligon (rectangle) dengan titik sudut *
* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */
glColor3f (1.0, 1.0, 0.1);
glBegin(GL_POINTS);
glVertex3f (8.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);
glEnd();
glFlush ();
}
14. 5. glBegin(GL_TRIANGLES);
#include <windows.h>
#include <GL/gl.h>
#include <GL/glut.h>
void display(void)
{
/* bersihkan layar dari titik pixel yang
masih ada */
glClear (GL_COLOR_BUFFER_BIT);
/* gambar poligon (rectangle) dengan titik sudut
*
* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */
glBegin(GL_POLYGON);
glColor3f(0.1, 0.0, 0.1);
glVertex3f (-0.8, 0.0, 0.0);
glColor3f(0.0, 0.0, 1.0);
glVertex3f (0.0, 0.8, 0.0);
glColor3f(1.0, 1.1, 0.0);
glVertex3f (0.8, 0.0, 0.0);
glVertex3f (0.0, -0.8, 0.0);
glColor3f(0.0, 0.1, .0);
glVertex3f (-0.8, 0.0, 0.0);
glColor3f(1.0, 1.0, 0.0);
glEnd();
glColor3f(0.0, 1.0, 0.0);
glBegin(GL_TRIANGLES);
glVertex3f(0.0, 0.0, -0.8);
glVertex3f (0.0, -8.0, 0.0);
glVertex3f(0.0, 0.0, 0.8);
glEnd();
glFlush ();
}
void kunci(unsigned char key, int x, int y)
{
switch (key)
{
case 27 :
case 'q':
exit(0);
break;
}
glutPostRedisplay();
19. 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 ();
- Buatlah Gambar segi empat dengan didalamnya diblok warna merah
#include <windows.h>
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include <stdlib.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
glBegin(GL_POLYGON);
glVertex2f(-5.0, 5.0);
glColor3f(0.0,0.0,0.0);
glVertex2f(-5.0, -5.0);
20. glColor3f(1.0,0.0,0.0);
glVertex2f(5.0, -5.0);
glColor3f(0.0,0.0,0.0);
glVertex2f(5.0, 5.0);
glEnd();
glFlush();
}
void myinit()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-10.0,10.0,10.0,-10.0); // untuk
ukuran coordinat x, y
glMatrixMode(GL_MODELVIEW);
glClearColor(0.0,1.0,0.0,0.0); // menentukan
intesitas warna RGB = terakhir
glColor3f(0.0,0.0,1.0);
}
int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(300,300); // ukuran
besarnya resolusi
glutInitWindowPosition(100,100); // untuk
posisi windows
glutCreateWindow("Segitiga Warna");
glutDisplayFunc(display);
myinit();
glutMainLoop();
return 0;
}
21. BAB IV
PENUTUP
4.1 Kesimpulan
Salah satu aplikasi atau software yang digunakan untuk membuat grafik,
animasi ataupun game serta program sederhana lainnya. Gambar yang terdapat di
dalam openGL meliputi polygon, segiti tiga, persegi dsb. Selain itu juga openGL
merupakan perangkat lunak yang memiliki objek-objek tertentu yang disibut
dengan primitive drawing.
Dalam mengoprasikan atau menjalankan OpenGL ini selalu dimulai dengan
glBegin(); dalam menggambar baik okjek, titik, atau garis selalu disertai dengan
glBegin() gambar yang ingin kita gambar di masukkan di dalam kurung
setelahnya misalnya, glbegin (GL_LINES); perintah dalam kurung yang akan
membuat garis vertical maupun horizontal sesuai dengan selera kita. Titik koma
dibelakang kurang yaitu sebagai pembatas dari setiap pengcodingan dalam
openGL namun tidak semua dari coding tersebut harus ada titik komanya, seperti
glEnd () }, ditandai dengan kurung kurawal yang berfungsi untuk membatasi
keseluruhan program yang kita butuhkan.
Setelah kita melakukan intruksi untuk membuat sesuatu yang berada dalam
imajinasi kita. Maka yang dibutuhkan pula yaitu glVertex, Verrtex ini yang akan
mengawali pekerjaan kita dan akan menjadi suatu acuan penting ketika dalam
pembuatan objek yang berupa titik. Misalnya, glVertex (0.0, 2.0, 0.0, 0.0);
maksudnya titik atau garis coordinat x atau y untuk memulai titik dalam
menggambar sebuah objek.
Setelah kita memula dengan glBegin(), tentu membutuhkan pula untuk
mengakhiri sebuah pekerjaan, glEnd () yang menjadi penutup dari pekerjaan kita
pada perangkat lunak OpenGL.
4.2 Saran
Asisten tidak cukup samapai disini untuk mentransformasikan ilmu yang
dimiliki, namun bagaimana nantinya kami bisa di luar praktikum untuk belajar
lebih baik.