GRAFIKA KOMPUTER
OLEH :
NAMA
Muhazar Ananda
NIM
1320305008
KELAS
N3 pagi
JURUSAN
TIK
PRODI
TMJ
Judul Praktikum
No. Praktikum
: 0N3/TMJ/2016
Nama
: Muhazar Ananda
NIM
: 1320305008
Kelas/Semester
: N3 / VI (Genap)
Jurusan/Prodi
: TIK / TMJ
Pemeriksa
Tanggal Pengesahan
: 30 februari 2016
Nilai
Mengetahui,
Dosen Pengajar
( Mursyidah ST,MT )
Nip.
Mahasiswa
( Muhazar Ananda)
Nim. 1320305008
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 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
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
Fill area
Text
Segita
BAB III
IMPLEMENTASI
3.1 Kegiatan Praktikum
PROGRAM PRIMITIS DRAWING
1. Gantilah sintak program yang berwarna merah bold untuk membuat berbagai
macam primitive drawing. Lakukan pengamatan apa yang terjadi
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);
penyelesaiannya :
1. glBegin(GL_point);
#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, 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(680,480);
glutInitWindowPosition(100,100);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutCreateWindow("Muhazar");
glutDisplayFunc(display);
glutKeyboardFunc(kunci);
glutMainLoop();
return 0;
}
Hasilnya :
2. Gl_polygon
#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(0.0,1.0,0.0);
glBegin(GL_POLYGON);
glVertex2f(-5.0, 5.0);
glColor3f(0.0,0.0,0.0);
glVertex2f(-5.0, -5.0);
glColor3f(1.0,1.0,1.0);
glVertex2f(5.0, -5.0);
glColor3f(0.0,0.0,0.0);
glVertex2f(5.0, 5.0);
glColor3f(1.0,1.0,1.0);
glVertex2f(0.10, 10.0);
glEnd();
glColor3f(0.0,1.0,0.0);
glBegin(GL_TRIANGLES);
glVertex2f(0.0, -10.0);
glVertex2f(-5.0, -5.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(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;
}
Hasilnya:
3. 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;
}
4. 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 ();
}
5. 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 ();
}
6. 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();
}
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;
}
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)
V. Tugas
1. Cobalah program diatas lakukan percobaan sesuai dengan perintah diatas
2. Buat Segitiga sama kaki
3. Buat Gambar Kubus
4. Buat Warna Pelangi yang terdiri dari 7 warna
5. Buatlah Gambar segiempat dengan didalamnya diblok warna merah
Penyelesaiannya:
1. Sudah dijawab di no 1 diatas
2. Segitiga sama kaki
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.0);
glVertex3f (-0.5, 0.0, 0.0);
glColor3f(0.0, 1.0, 1.0);
glVertex3f (0.0, 0.5, 0.0);
glColor3f(1.0, 0.1, 0.1);
glVertex3f (0.5, 0.0, 0.0);
glEnd();
glFlush ();
}
3. Gambar Kubus
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <gl/glut.h>
void initializer_list (void){
glClearColor(0.0, 1.0, 0.0,
1.0);
glShadeModel(GL_FLAT);}
void display (void){
glClear(GL_COLOR_BUFF
ER_BIT);
glColor3f(0.0, 0.0, 0.0);
glLoadIdentity();
gluLookAt(0.5, 2.0, 5.0, 0.0,
0.0, 0.0, 0.0, 1.0, 0.0);
glScalef(2.0, 2.0, 2.0);
glutWireCube(1.0);
glFlush();
}
void reshape (int w, int h){
glViewport(0,0,(GLsizei)w,
(GLsizei)h);
glMatrixMode(GL_PROJE
CTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0,
1.0, 2.0, 20.0);
glMatrixMode(GL_MODEL
VIEW);
}
int main (int argc,
char**argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT
_SINGLE|GLUT_RGB);
glutInitWindowSize
(500,500);
glutCreateWindow(argv[0]);
initializer_list ();
glutDisplayFunc (display);
glutReshapeFunc (reshape);
glutMainLoop();
return 0;}
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);
glColor3f(0.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;
}
BAB IV
PENUTUP
4.1 Analisa
#include <gl/glut.h>
Pemrograman grafis menggunakan OpenGL-GLUT membutuhkan header glut.h yang
ada difolder c:\Program Files\Microsoft Visual Studio\VC98\bin\GL
void userdraw(void);
Fungsi userdraw adalah suatu fungsi untuk membuat kode program untuk
menghasilkan suatu gambar.
glutInitWindowPosition (100,100);
glutInitWindowSize (640,480);
Membuat windows dengan ukuran(640,480) dengan titik kiri atas jendela diletakkan
pada posisi(100,100) dilayar computer
glColor3f(1.0,0.0,0.0); //merah
Berfungsi untuk memilih warna yang digunakan untuk membersihkan
(menghapus) layar latar belakang. dalam pemilihan warna ini saya menggunakan warna
merah dengan frekuensi warna (1,0,0)
glColor3f(0.0,0.0,1.0); //biru
Berfungsi untuk memilih warna yang digunakan untuk membersihkan
(menghapus) layar latar belakang. dalam pemilihan warna ini saya menggunakan warna
biru dengan frekuensi warna (0,0,1)
glColor3f(0.0,1.0,0.0); //hijau
Dalam pemilihan warna ini saya menggunakan warna hijau dengan frekuensi
warna (0,1,0)
glColor3f(1.0,1.0,0.0);//kuning
Dalam pemilihan warna ini saya menggunakan warna kuning dengan frekuensi
warna (1,1,0)
glClear(GL_COLOR_BUFFER_BIT);
berfungsi untuk mengkonfirmasi kembali warna yang akan digunakan sebagai
background.
glBegin(GL_LINES).
dimana kita menentukan titik awal dan akhir pada garis terlebih dahulu
glVertex3f (nilai /poin titik).
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.