SlideShare a Scribd company logo
1 of 21
LAPORAN
GRAFIKA KOMPUTER
NURHIDAYAT DBC 113 055
JULPIYANUR DBC 113 064
REKKY RAMADHAN DBC 113 081
DONI APRIADI DBC 113 105
RIKI YULIANDI DBC 113 111
FAHMI AZHARI DBC 113 130
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA
2015
BAB I
LANDASAN TEORI
1. OpenGL
OpenGL adalah kumpulan standard API (Application Programming Interface) yang
menghubungkan software dengan hardware grafis untuk menampilkan gambar 2D dan
3D. Intinya OpenGL itu adalah kumpulan library untuk mengakses hardware (GL=
graphical library). OpenGL mendefinisikan berbagai instruksi untuk menggambar objek,
image (umumnya 3D) dan melakukan berbagai operasi terhadap objek-objek tersebut.
OpenGL tidak mengandung source code, hanya spesifikasi saja. Pembuat GPU
(graphical processing unit) seperti NVIDIA, Intel, Samsung dll yang akan membuat
implementasi. Dengan cara ini walaupun GPU diproduksi oleh berbagai produsen
dengan berbagai berbagai variasi tipe dan implementasi, semuanya dapat diperintah
dengan spesifikasi yang sama.
OpenGL dirancang independen terhadap sistem operasi, hardware, maupun bahasa
pemrograman yang digunakan. Bahkan jika GPU tidak tersedia, openGL dapat
dijalankan diatas software yang mengemulasi hardware, tentu dengan kinerja yang lebih
rendah.
OpenGL dikembangkan mulai dari tahun 90-an dan saat ini telah menjadi standard
industri. OpenGL ada hampir disemua platform: Windows, Linux, Mac, smartphone,
game console, avionic dan berbagai embedded system. Dari sisi software, OpenGL
digunakan untuk berbagai macam hal mulai dari game, visualisasi, simulasi, CAD
(Computer-Aided Design) sampai editing video dan image.
Standard yang ada di OpenGL dikelola oleh konsorsium yang berisi berbagai pihak
yang berkepentingan dengan computer grafis. Konsorsium itu disebut Khronos yang
anggotanya antara lain: AMD, Intel, NVIDIA, Apple, ARM, Nokia, Qualcomm,
Samsung, Sony, Epic Games. Khronos juga mengelola standard lain seperti OpenCL,
OpenVG dan WebGL.
OpenGL adalah low level API, jadi saat kita menggambar suatu objek kita harus
mengirimkan terlebih dulu objek, texture, shaders dan lainnya. Ini membuat
programming dengan OpenGL bisa jadi hal yang rumit, tapi disisi lain jadi lebih
powerfull dan fleksibel. Bagi pemula hal ini bisa memusingkan karena terdapat banyak
variasi teknik yang dapat dilakukan untuk mencapai hasil yang sama. Umumnya
pengembang game tidak menggunakan openGL secara langsung, tetapi melalui game
engine seperti Unity.
2. C++
Sebelum C++ dikembangkan, sudah ada bahasa sejenis yang digunakan programmer
yaitu bahasa C (dikembangkan oleh Dennis Ritchie dari bahasa B), saat itu dia dari Bell
Laboratories sedang mengembangkan system operasi Unix. C ini merupakan bahasa
prosedural, kemudian dikembangkan hingga menjadi sebuah bahasa pemrograman C
yang berorientasi pada object (OOP – Object Oriented Programming) yang kemudian
disebut dengan C++ (dikembangkan oleh Bejarne Stroustrup tahun 1979).
Bahasa C merupakan bahasa pemrograman prosedural, di mana penyelesaian atas
suatu masalah dilakukan dengan membagi-bagi masalah tersebut ke dalam sub-sub
masalah yang lebih kecil. Sedangkan C++ merupakan bahasa pemrograman yang
memiliki sifat Object Oriented Programming (OOP). Untuk menyelesaikan masalah,
C++ melakukan langkah pertama dengan mendefinisikan class-class yang merupakan a.-
class yang dibuat sebelumnya sebagai abstraksi dari objek-objek fisik. Class tersebut
berisi keadaan objek, anggota-anggotanya, dan kemampuan dari objeknya. Setelah
beberapa class dibuat, masalah dipecahkan menggunakan class.
3. OpenGL pada C++
Pemrograman C++ dengan pustaka OpenGL itu dilakukan untuk menghasilkan suatu
gambar di monitor secara manual. Subpustaka-subpustaka di dalam OpenGL seperti
GLUT, GLU, dan GLEW. Secara singkat, Anda akan menemukan fungsi-fungsi program
seperti berikut:
 glBegin()
 glEnd()
 glVertex2f()
 glClear()
Perintah di atas biasanya digunakan pada program-program C++ yang memanfaatkan
OpenGL. Sederhananya, Anda akan membuat gambar, animasi, atau game dengan
kendali 100% di tangan Anda karena menggunakan OpenGL. Jika Anda terbiasa
membuat gambar dengan GIMP atau Krita di Linux, maka secara kasar Anda akan
membuat gambar per pikselnya di pemrograman OpenGL. Namun keuntungan
menggunakan OpenGL adalah Anda tidak perlu menulis kode gambar per piksel karena
sudah dilakukan oleh fungsi-fungsi yang tersedia banyak di dalam OpenGL. Panggil
fungsi itu ke dalam kode C++ dan jadilah satu gambar. Itulah kegunaan pustaka OpenGL.
Perlu diingat, fungsi-fungsi dalam pemrograman OpenGL itu sangat khas. Di dalam
OpenGL, Anda akan menemukan fungsi-fungsi yang selalu diawali dengan gl seperti:
 glTranslatef()
 glClear()
4. GLUT
(GL Utility Toolkit) adalah pustaka yang dibuat untuk membantu OpenGL dalam hal
I/O ke dalam sistem operasi secara low-level. Dengan kata lain, GLUT yang bertanggung
jawab membuat jendela untuk OpenGL. GLUT juga yang bertanggung jawab memroses
masukan dari keyboard/mouse pengguna untuk mengendalikan program OpenGL.
Tulisan ini akan dititikberatkan pada GLUT daripada OpenGL.
Sedangkan di dalam GLUT, Anda akan temukan fungsi-fungsinya berawalan glut
seperti:
 glutMainLoop()
 glutDisplayFunc()
 glutInit()
 glutCreateWindow()
BAB II
PEMBAHASAN
Pembuatan Citra Lampion
Pembuatan gambar lampion pada c++ memerlukan sebuah library OpenGL package
untuk menampilkan graphic citra yang dibuat. Glut atau OpenGL adalah sekumpulan perintah
(syntax) rendering primitif, dan menjadi landasan bagi perintahperintah rendering dengan
level yang lebih tinggi. OpenGL juga harus menggunakan landasan mekanisme pembuatan
window sesuai dengan sistem yang digunakan.
Dengan menggunakan fungsi dari #include <GL/glut.h> #include <iostream>
#include <glGL.h> #include <glGLU.h> yang merupakan library dari openGL pada Bahasa
c++ agar dapat menjalan fungsi glutWireSphere(2,90,90); untuk menggambar bola yang
berada ditengah atau pada inti objek donat dengan fungsi dari WireSphere yang terdiri dari
nilai (radius, slices, stacks) di mana nilai yang dimasukan menentukan bentuk dari pola
objek bola yang akan dibuat. Kemudian diikuti dengan glutSolidSphere(2,90,90); yang
menjadikan warna dari bola yang dibuat menjadi full warna sesuai dengan nilai yang ada
pada fungsi glutWireSphere yakni nilai radius=2, slices=90 dan nilai stacks=90 agar
pemberian warna full sesuai dengan pola gambar bola yang dibuat.
Pada perintah glutWireTorus (4, 2, 90, 30); yang berfungsi untuk membuat sebuah pola dari
fungsi glut yang telah disediakan yakni WireTorus dengan nilai yang dapat diinputkan
meliputi INNER RADIUS, OUTTER RADIUS, SIDES DAN RINGS seperti pada perintah
yang diguanakan nilai yang diberikan agar membentuk sebuah donat adalah INNER
RADIUS = 4, OUTTER RADIUS = 2, SIDES = 90 DAN RINGS = 30 untuk perintah
glColor3f(1,0,0); merupakan sebuah fungsi yang digunakan untuk memberikan warna pada
sebuah pola pada fungsi glutWireTorus dengan pewarnaan (R,G,B) seperti pada perintah
yang digunakan nilai R=1, G=0 dan B=0 sehingga warna pada pola akan menjadi merah,
Koding pembuatan Objek :
glutWireSphere(2,90,90);//fungsi bola
glutSolidSphere(2,90,90);//Bola Penuh warna
glColor3f(1,0,0);//fungsi Warna(R,G,B) pada donat
glutWireTorus (4, 2, 90, 30);//fungsi donat
Menggerakan Gambar dengan Tombol
Zoom In dan Zoom Out :
Dengan menggunakan sebuah prosedur void Keyboard dengan parameter yang telah
disediakan dari prosedur ini dari library OpenGL yakni (GLubyte key, GLint x, GLint y).
Dimana isi dari prosedur ini adalah if (key == 'a' || key == 'A') z+=2; dimana setiap user
menekan tombol ‘a/A’ pada keyboard nilai z akan melakukan increment atau penambahan
nilai z pada objek sebanyak 2 atau pada tampilan akan melakukan proses zoom in. Sedangkan
if (key == 'd' || key == 'D') z-=2; merupakan fungsi untuk zoom out pada objek dengan
mengurangi (decrement) nilai z sebanyak 2 setiap user menekan tombol ‘d/D’.
Koding zoom in dan zoom out :
void Keyboard (GLubyte key, GLint x, GLint y) {
if (key == 'a' || key == 'A') z+=2;
if (key == 'd' || key == 'D') z-=2;
Zoom Out (Tombol D) :
Zoom In (Tombol A) :
Rotasi Citra :
Pada rotasi citra, menggunakan fungsi dari if (key == 'x' || key == 'X') { x1=1;
y1=0; z1=0; sudut +=10; yang berfungsi jika user menekan tombol ‘x/X’ maka proses
rotasi akan dilakukan dengan pemberian nilai x1=1, nilai y1=0, z1=0 dan pada nilai sudut
melakukan proses increment setiap tombol ‘x/X’ ditekan dengan nilai increment sebanyak 10,
sehingga Citra atau gambar berputar dengan titik sumbu x.
Koding Rotasi pada sumbu x :
Untuk rotasi sesuai dengan sumbu y, menggunakan perintah if (key == 'y' || key ==
'Y') { x1=0; y1=1; z1=0; sudut +=-10; dimana setiap user menekan tombol ‘y/Y’ maka
proses rotasi akan dilakukan dengan nilai x1= 0, y1 diberikan nilai 1, z1 = 0 dan nilai sudut
akan melakukan increment sebanyak -10 (kebelakang).
if (key == 'x' || key == 'X') {
x1=1;
y1=0;
z1=0;
sudut +=10;
}
Koding rotasi pada sumbu y :
Untuk rotasi sesuai dengan sumbu z, menggunakan perintah if (key == 'z' || key ==
'Z') { x1=0; y1=z; z1=1; sudut +=-10; dimana setiap user menekan tombol ‘y/Y’ maka
proses rotasi akan dilakukan dengan nilai x1 = 0, y1 = 0 1, z1 diberikan nilai 1 dan nilai sudut
akan melakukan increment sebanyak -10 maka citra akan berputar pada poros.
Koding rotasi pada sumbu z :
if (key == 'y' || key == 'Y') {
x1=0;
y1=1;
z1=0;
sudut +=-10;
}
if (key == 'z'|| key == 'Z') {
x1=0;
y1=0;
z1=1;
sudut +=-10;
}
Fungsi fullscreen menggunakan perintah if ( key == 'f'|| key == 'F') { glutFullScreen
();} dimana jika user menekan tombol ‘f/F’ pada keyboard maka fungsi dari library openGL
glutFullScreen (); maka tampilan window run dari program ini akan menjadi fullscreen.
Koding fullscreen :
if ( key == 'f'|| key == 'F') {
glutFullScreen ();
}
Main Program
Untuk main program menggunakan int main (int argc, char **argv) dimana isi dari
main program adalah memanggil mengembalikan semua prosedur – prosedur yang ada.
Sehingga saat program di run akan menjalankan semua prosedur yang dipanggil dalam main
program ini. glutInitWindowPosition (1,1); akan menampilkaan jendela tampilan hasil run
pada koordinat (1,1) atau letak menampilkan window pada pojok kiri atas. Kemudian
pemanggilan fungsi dari glutInitWindowSize (w,h); merupakan size (weight dan Height) atau
ukuran window saat program dijalankan di mana nilai w = 800 dan h = 600. Untuk fungsi
glutCreateWindow ("TUGAS GRAFKOM PERBAIKAN CITRA (ROTASI CITRA
DAN FULLSCREEN)") adalah memberikan judul pada window dengan isi judul “TUGAS
GRAFKOM PERBAIKAN CITRA (ROTASI CITRA DAN FULLSCREEN)”, kemudian
glutKeyboardFunc (Keyboard); untuk menjalankan fungsi dari input keyboard dari user.
Koding main program :
int main (int argc, char **argv) {
glutInit (&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA);
glutInitWindowPosition (1,1);
glutInitWindowSize (w,h);
glutCreateWindow ("TUGAS GRAFKOM PERBAIKAN CITRA (ROTASI CITRA DAN
FULLSCREEN)");
gluOrtho2D (-w/2,w/2,-h/2,h/2);
glutDisplayFunc (renderScene);
glutReshapeFunc (resize);
glutKeyboardFunc (Keyboard);
glutTimerFunc (1,timer,0);
glutMainLoop ();
}
Hasil Run program :
BAB III
KESIMPULAN
Dari pembahasan pokok diatas dapat ditarik kesimpulan bahwa Pemrograman C++
dengan Library OpenGL dilakukan untuk menghasilkan suatu gambar di monitor secara
manual. Secara lebih spesifik lagi OpenGL adalah kumpulan standard API (Application
Programming Interface) yang menghubungkan software dengan hardware grafis untuk
menampilkan gambar 2D dan 3D. Intinya OpenGL itu adalah kumpulan library untuk
mengakses hardware (GL= graphical library).
OpenGL dalam menghasilkan suatu gambar memerlukan beberapa directory
tambahan yaitu GLUT (GL Utility Toolkit) adalah pustaka yang dibuat untuk membantu
OpenGL dalam hal I/O ke dalam sistem operasi secara low-level. Dengan kata lain, GLUT
yang bertanggung jawab membuat jendela untuk OpenGL.
OpenGL juga merupakan suatu antarmuka antara software dengan hardware grafis.
Antarmuka ini memiliki ratusan function untuk menghasilkan citra obyek 3D dengan warna
yang berkualitas tinggi. Sifatnya yang independent menyebabkan OpenGL dapat digunakan
di hampir seluruh bahasa pemrograman yang tersedia. Dengan kata lain, OpenGL hanya
menyediakan function dan library yang diperlukan untuk menghasilkan citra, sedangkan
sintak program tergantung kepada bahasa pemrograman yang digunakan.
DAFTAR PUSTAKAN
http://arsipbertuah.blogspot.co.id/2015/01/tugas-transformasi-2d-dan-3d-opengl-c.html (di
akses pada 27 oktober 2015)
http://indonesiaberkicau.com/apa-itu-opengl/ (diakses pada 27 oktober 2015)
http://programgagal.blogspot.co.id/2013/02/sejarah-dan-pengertian-bahasa-c-dan-c.html
(diakses pada 27 otober 2015)
http://faqihshofyan.blogspot.co.id/2014/05/pengantar-pemrograman-opengl-di.html (diakses
pada 27 oktober 2015)
LAMPIRAN
Run Program :
Fungsi Zoom Out (Tombol d) :
Fungsi Zoom In (Tombol a) :
Fungsi Rotasi sumbu x (Tombol x) :
Fungsi Rotasi sumbu y (Tombol y) :
Fungsi Rotasi sumbu z (Tombol z) :
Fungsi FullScreen (Tombol F) :
Coding Program :
#include <GL/glut.h>
#include <iostream>
#include <glGL.h>
#include <glGLU.h>
#include <windows.h>
int w=800, h=600, z=0;
int x1=0, y1=0, z1=0, sudut=0;
void renderScene (void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor (0, 0, 0, 0);
glLoadIdentity ();
glTranslatef (0, 0, z);
glRotatef (sudut, x1, y1, z1);
glColor3f(1, 1, 0);
glutWireSphere(2,90,90);//fungsi bola
glutSolidSphere(2,90,90)
glColor3f(1,0,0);
glutWireTorus (4, 2, 90, 30);//fungsi donat
glutSwapBuffers ();
}
void resize (int w1, int h1) {
glViewport (0, 0, w1, h1);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective (45.0,(float) w1/(float) h1,1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}
void Keyboard (GLubyte key, GLint x, GLint y) {
if (key == 'a' || key == 'A') z+=2;
if (key == 'd' || key == 'D') z-=2;
if (key == 'x' || key == 'X') {
x1=1;
y1=0;
z1=0;
sudut +=10;
}
if (key == 'y' || key == 'Y') {
x1=0;
y1=1;
z1=0;
sudut +=-10;
}
if (key == 'z'|| key == 'Z') {
x1=0;
y1=0;
z1=1;
sudut +=-10;
}
if ( key == 'f'|| key == 'F') {
glutFullScreen ();
}
{
int foo;
foo = x + y;
if ('q' == key || 'Q' == key || 27 == key)
exit (0);
}
}
void timer (int value) {
glutPostRedisplay ();
glutTimerFunc (1,timer,0);
}
int main (int argc, char **argv) {
glutInit (&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA);
glutInitWindowPosition (100,100);
glutInitWindowSize (w,h);
glutCreateWindow ("TUGAS GRAFKOM(CITRA LINGKARAN)");
gluOrtho2D (-w/2,w/2,-h/2,h/2);
glutDisplayFunc (renderScene);
glutReshapeFunc (resize);
glutKeyboardFunc (Keyboard);
glutTimerFunc (1,timer,0);
glutMainLoop ();
}

More Related Content

Similar to 2414_GRAFKOM terapi dikit.docx

Grafika 130631100018 ainun_najib_modul1
Grafika 130631100018 ainun_najib_modul1Grafika 130631100018 ainun_najib_modul1
Grafika 130631100018 ainun_najib_modul1Ainun Najib
 
Tugas rk kelompok7
Tugas rk kelompok7Tugas rk kelompok7
Tugas rk kelompok7Rossi Aryani
 
229334287 laporan-praktikum-dhani
229334287 laporan-praktikum-dhani229334287 laporan-praktikum-dhani
229334287 laporan-praktikum-dhaniDex Dun
 
Octave dan Mikrokontroller Communication
Octave dan Mikrokontroller CommunicationOctave dan Mikrokontroller Communication
Octave dan Mikrokontroller CommunicationLusiana Diyan
 
#PetGame Scene Graph
#PetGame Scene Graph#PetGame Scene Graph
#PetGame Scene GraphBayu Radityo
 
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMANPENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMANNur Kholifah Hidayah
 
Network simulator_handbook
Network simulator_handbookNetwork simulator_handbook
Network simulator_handbookArdi Bolang
 
Membuat game j2 me nuril
Membuat game j2 me nurilMembuat game j2 me nuril
Membuat game j2 me nurilNorel_Brew
 
Flash game
Flash gameFlash game
Flash gameakoor
 
Flash Game
Flash GameFlash Game
Flash Gameakoor
 
Linear Filter dan Edge Detection
Linear Filter dan Edge DetectionLinear Filter dan Edge Detection
Linear Filter dan Edge DetectionLusiana Diyan
 
Pascal (Pengenalan).pdf
Pascal (Pengenalan).pdfPascal (Pengenalan).pdf
Pascal (Pengenalan).pdfDesaSumbung
 
Jeni j2 me-bab04-low level user interface
Jeni j2 me-bab04-low level user interfaceJeni j2 me-bab04-low level user interface
Jeni j2 me-bab04-low level user interfaceUNIVERSITY Of LAMPUNG
 

Similar to 2414_GRAFKOM terapi dikit.docx (20)

Grafika 130631100018 ainun_najib_modul1
Grafika 130631100018 ainun_najib_modul1Grafika 130631100018 ainun_najib_modul1
Grafika 130631100018 ainun_najib_modul1
 
Tugas rk kelompok7
Tugas rk kelompok7Tugas rk kelompok7
Tugas rk kelompok7
 
229334287 laporan-praktikum-dhani
229334287 laporan-praktikum-dhani229334287 laporan-praktikum-dhani
229334287 laporan-praktikum-dhani
 
Octave dan Mikrokontroller Communication
Octave dan Mikrokontroller CommunicationOctave dan Mikrokontroller Communication
Octave dan Mikrokontroller Communication
 
#PetGame Scene Graph
#PetGame Scene Graph#PetGame Scene Graph
#PetGame Scene Graph
 
Pemrograman sap 1
Pemrograman sap 1Pemrograman sap 1
Pemrograman sap 1
 
Laporan praktikum dpk modul 1
Laporan praktikum dpk modul 1Laporan praktikum dpk modul 1
Laporan praktikum dpk modul 1
 
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMANPENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
PENGENALAN SSISTEM OPERASI, IDE VISUAL C++, DAN ALGORITMA PEMROGRAMAN
 
Pemrograman SAP - 1
Pemrograman SAP - 1Pemrograman SAP - 1
Pemrograman SAP - 1
 
Open GL Tutorial04
Open GL Tutorial04Open GL Tutorial04
Open GL Tutorial04
 
Komputer grafik 1
Komputer grafik 1Komputer grafik 1
Komputer grafik 1
 
Komputer grafik 1
Komputer grafik 1Komputer grafik 1
Komputer grafik 1
 
Network simulator_handbook
Network simulator_handbookNetwork simulator_handbook
Network simulator_handbook
 
Membuat game j2 me nuril
Membuat game j2 me nurilMembuat game j2 me nuril
Membuat game j2 me nuril
 
Flash game
Flash gameFlash game
Flash game
 
Flash Game
Flash GameFlash Game
Flash Game
 
Dasar java mobile
Dasar java mobileDasar java mobile
Dasar java mobile
 
Linear Filter dan Edge Detection
Linear Filter dan Edge DetectionLinear Filter dan Edge Detection
Linear Filter dan Edge Detection
 
Pascal (Pengenalan).pdf
Pascal (Pengenalan).pdfPascal (Pengenalan).pdf
Pascal (Pengenalan).pdf
 
Jeni j2 me-bab04-low level user interface
Jeni j2 me-bab04-low level user interfaceJeni j2 me-bab04-low level user interface
Jeni j2 me-bab04-low level user interface
 

Recently uploaded

Geologi Jawa Timur-Madura Kelompok 6.pdf
Geologi Jawa Timur-Madura Kelompok 6.pdfGeologi Jawa Timur-Madura Kelompok 6.pdf
Geologi Jawa Timur-Madura Kelompok 6.pdfAuliaAulia63
 
Manajemen Lalu Lintas Baru Di Jalan Selamet Riyadi
Manajemen Lalu Lintas Baru Di Jalan Selamet RiyadiManajemen Lalu Lintas Baru Di Jalan Selamet Riyadi
Manajemen Lalu Lintas Baru Di Jalan Selamet RiyadiCristianoRonaldo185977
 
pertemuan-3-distribusi pada-frekuensi.ppt
pertemuan-3-distribusi pada-frekuensi.pptpertemuan-3-distribusi pada-frekuensi.ppt
pertemuan-3-distribusi pada-frekuensi.pptAhmadSyajili
 
Menggunakan Data matematika kelas 7.pptx
Menggunakan Data matematika kelas 7.pptxMenggunakan Data matematika kelas 7.pptx
Menggunakan Data matematika kelas 7.pptxImahMagwa
 
MARIA NOVILIA BOISALA FASILITATOR PMM.pptx
MARIA NOVILIA BOISALA FASILITATOR PMM.pptxMARIA NOVILIA BOISALA FASILITATOR PMM.pptx
MARIA NOVILIA BOISALA FASILITATOR PMM.pptxmariaboisala21
 
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptx
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptxUKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptx
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptxzidanlbs25
 
MATERI SESI 2 KONSEP ETIKA KOMUNIKASI.pptx
MATERI SESI 2 KONSEP ETIKA KOMUNIKASI.pptxMATERI SESI 2 KONSEP ETIKA KOMUNIKASI.pptx
MATERI SESI 2 KONSEP ETIKA KOMUNIKASI.pptxrikosyahputra0173
 

Recently uploaded (7)

Geologi Jawa Timur-Madura Kelompok 6.pdf
Geologi Jawa Timur-Madura Kelompok 6.pdfGeologi Jawa Timur-Madura Kelompok 6.pdf
Geologi Jawa Timur-Madura Kelompok 6.pdf
 
Manajemen Lalu Lintas Baru Di Jalan Selamet Riyadi
Manajemen Lalu Lintas Baru Di Jalan Selamet RiyadiManajemen Lalu Lintas Baru Di Jalan Selamet Riyadi
Manajemen Lalu Lintas Baru Di Jalan Selamet Riyadi
 
pertemuan-3-distribusi pada-frekuensi.ppt
pertemuan-3-distribusi pada-frekuensi.pptpertemuan-3-distribusi pada-frekuensi.ppt
pertemuan-3-distribusi pada-frekuensi.ppt
 
Menggunakan Data matematika kelas 7.pptx
Menggunakan Data matematika kelas 7.pptxMenggunakan Data matematika kelas 7.pptx
Menggunakan Data matematika kelas 7.pptx
 
MARIA NOVILIA BOISALA FASILITATOR PMM.pptx
MARIA NOVILIA BOISALA FASILITATOR PMM.pptxMARIA NOVILIA BOISALA FASILITATOR PMM.pptx
MARIA NOVILIA BOISALA FASILITATOR PMM.pptx
 
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptx
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptxUKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptx
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptx
 
MATERI SESI 2 KONSEP ETIKA KOMUNIKASI.pptx
MATERI SESI 2 KONSEP ETIKA KOMUNIKASI.pptxMATERI SESI 2 KONSEP ETIKA KOMUNIKASI.pptx
MATERI SESI 2 KONSEP ETIKA KOMUNIKASI.pptx
 

2414_GRAFKOM terapi dikit.docx

  • 1. LAPORAN GRAFIKA KOMPUTER NURHIDAYAT DBC 113 055 JULPIYANUR DBC 113 064 REKKY RAMADHAN DBC 113 081 DONI APRIADI DBC 113 105 RIKI YULIANDI DBC 113 111 FAHMI AZHARI DBC 113 130 JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2015
  • 2. BAB I LANDASAN TEORI 1. OpenGL OpenGL adalah kumpulan standard API (Application Programming Interface) yang menghubungkan software dengan hardware grafis untuk menampilkan gambar 2D dan 3D. Intinya OpenGL itu adalah kumpulan library untuk mengakses hardware (GL= graphical library). OpenGL mendefinisikan berbagai instruksi untuk menggambar objek, image (umumnya 3D) dan melakukan berbagai operasi terhadap objek-objek tersebut. OpenGL tidak mengandung source code, hanya spesifikasi saja. Pembuat GPU (graphical processing unit) seperti NVIDIA, Intel, Samsung dll yang akan membuat implementasi. Dengan cara ini walaupun GPU diproduksi oleh berbagai produsen dengan berbagai berbagai variasi tipe dan implementasi, semuanya dapat diperintah dengan spesifikasi yang sama. OpenGL dirancang independen terhadap sistem operasi, hardware, maupun bahasa pemrograman yang digunakan. Bahkan jika GPU tidak tersedia, openGL dapat dijalankan diatas software yang mengemulasi hardware, tentu dengan kinerja yang lebih rendah. OpenGL dikembangkan mulai dari tahun 90-an dan saat ini telah menjadi standard industri. OpenGL ada hampir disemua platform: Windows, Linux, Mac, smartphone, game console, avionic dan berbagai embedded system. Dari sisi software, OpenGL digunakan untuk berbagai macam hal mulai dari game, visualisasi, simulasi, CAD (Computer-Aided Design) sampai editing video dan image. Standard yang ada di OpenGL dikelola oleh konsorsium yang berisi berbagai pihak yang berkepentingan dengan computer grafis. Konsorsium itu disebut Khronos yang anggotanya antara lain: AMD, Intel, NVIDIA, Apple, ARM, Nokia, Qualcomm, Samsung, Sony, Epic Games. Khronos juga mengelola standard lain seperti OpenCL, OpenVG dan WebGL. OpenGL adalah low level API, jadi saat kita menggambar suatu objek kita harus mengirimkan terlebih dulu objek, texture, shaders dan lainnya. Ini membuat programming dengan OpenGL bisa jadi hal yang rumit, tapi disisi lain jadi lebih powerfull dan fleksibel. Bagi pemula hal ini bisa memusingkan karena terdapat banyak variasi teknik yang dapat dilakukan untuk mencapai hasil yang sama. Umumnya
  • 3. pengembang game tidak menggunakan openGL secara langsung, tetapi melalui game engine seperti Unity. 2. C++ Sebelum C++ dikembangkan, sudah ada bahasa sejenis yang digunakan programmer yaitu bahasa C (dikembangkan oleh Dennis Ritchie dari bahasa B), saat itu dia dari Bell Laboratories sedang mengembangkan system operasi Unix. C ini merupakan bahasa prosedural, kemudian dikembangkan hingga menjadi sebuah bahasa pemrograman C yang berorientasi pada object (OOP – Object Oriented Programming) yang kemudian disebut dengan C++ (dikembangkan oleh Bejarne Stroustrup tahun 1979). Bahasa C merupakan bahasa pemrograman prosedural, di mana penyelesaian atas suatu masalah dilakukan dengan membagi-bagi masalah tersebut ke dalam sub-sub masalah yang lebih kecil. Sedangkan C++ merupakan bahasa pemrograman yang memiliki sifat Object Oriented Programming (OOP). Untuk menyelesaikan masalah, C++ melakukan langkah pertama dengan mendefinisikan class-class yang merupakan a.- class yang dibuat sebelumnya sebagai abstraksi dari objek-objek fisik. Class tersebut berisi keadaan objek, anggota-anggotanya, dan kemampuan dari objeknya. Setelah beberapa class dibuat, masalah dipecahkan menggunakan class. 3. OpenGL pada C++ Pemrograman C++ dengan pustaka OpenGL itu dilakukan untuk menghasilkan suatu gambar di monitor secara manual. Subpustaka-subpustaka di dalam OpenGL seperti GLUT, GLU, dan GLEW. Secara singkat, Anda akan menemukan fungsi-fungsi program seperti berikut:  glBegin()  glEnd()  glVertex2f()  glClear() Perintah di atas biasanya digunakan pada program-program C++ yang memanfaatkan OpenGL. Sederhananya, Anda akan membuat gambar, animasi, atau game dengan kendali 100% di tangan Anda karena menggunakan OpenGL. Jika Anda terbiasa membuat gambar dengan GIMP atau Krita di Linux, maka secara kasar Anda akan membuat gambar per pikselnya di pemrograman OpenGL. Namun keuntungan menggunakan OpenGL adalah Anda tidak perlu menulis kode gambar per piksel karena
  • 4. sudah dilakukan oleh fungsi-fungsi yang tersedia banyak di dalam OpenGL. Panggil fungsi itu ke dalam kode C++ dan jadilah satu gambar. Itulah kegunaan pustaka OpenGL. Perlu diingat, fungsi-fungsi dalam pemrograman OpenGL itu sangat khas. Di dalam OpenGL, Anda akan menemukan fungsi-fungsi yang selalu diawali dengan gl seperti:  glTranslatef()  glClear() 4. GLUT (GL Utility Toolkit) adalah pustaka yang dibuat untuk membantu OpenGL dalam hal I/O ke dalam sistem operasi secara low-level. Dengan kata lain, GLUT yang bertanggung jawab membuat jendela untuk OpenGL. GLUT juga yang bertanggung jawab memroses masukan dari keyboard/mouse pengguna untuk mengendalikan program OpenGL. Tulisan ini akan dititikberatkan pada GLUT daripada OpenGL. Sedangkan di dalam GLUT, Anda akan temukan fungsi-fungsinya berawalan glut seperti:  glutMainLoop()  glutDisplayFunc()  glutInit()  glutCreateWindow()
  • 5. BAB II PEMBAHASAN Pembuatan Citra Lampion Pembuatan gambar lampion pada c++ memerlukan sebuah library OpenGL package untuk menampilkan graphic citra yang dibuat. Glut atau OpenGL adalah sekumpulan perintah (syntax) rendering primitif, dan menjadi landasan bagi perintahperintah rendering dengan level yang lebih tinggi. OpenGL juga harus menggunakan landasan mekanisme pembuatan window sesuai dengan sistem yang digunakan. Dengan menggunakan fungsi dari #include <GL/glut.h> #include <iostream> #include <glGL.h> #include <glGLU.h> yang merupakan library dari openGL pada Bahasa c++ agar dapat menjalan fungsi glutWireSphere(2,90,90); untuk menggambar bola yang berada ditengah atau pada inti objek donat dengan fungsi dari WireSphere yang terdiri dari nilai (radius, slices, stacks) di mana nilai yang dimasukan menentukan bentuk dari pola objek bola yang akan dibuat. Kemudian diikuti dengan glutSolidSphere(2,90,90); yang menjadikan warna dari bola yang dibuat menjadi full warna sesuai dengan nilai yang ada pada fungsi glutWireSphere yakni nilai radius=2, slices=90 dan nilai stacks=90 agar pemberian warna full sesuai dengan pola gambar bola yang dibuat. Pada perintah glutWireTorus (4, 2, 90, 30); yang berfungsi untuk membuat sebuah pola dari fungsi glut yang telah disediakan yakni WireTorus dengan nilai yang dapat diinputkan meliputi INNER RADIUS, OUTTER RADIUS, SIDES DAN RINGS seperti pada perintah yang diguanakan nilai yang diberikan agar membentuk sebuah donat adalah INNER RADIUS = 4, OUTTER RADIUS = 2, SIDES = 90 DAN RINGS = 30 untuk perintah glColor3f(1,0,0); merupakan sebuah fungsi yang digunakan untuk memberikan warna pada sebuah pola pada fungsi glutWireTorus dengan pewarnaan (R,G,B) seperti pada perintah yang digunakan nilai R=1, G=0 dan B=0 sehingga warna pada pola akan menjadi merah, Koding pembuatan Objek : glutWireSphere(2,90,90);//fungsi bola glutSolidSphere(2,90,90);//Bola Penuh warna glColor3f(1,0,0);//fungsi Warna(R,G,B) pada donat glutWireTorus (4, 2, 90, 30);//fungsi donat
  • 6. Menggerakan Gambar dengan Tombol Zoom In dan Zoom Out : Dengan menggunakan sebuah prosedur void Keyboard dengan parameter yang telah disediakan dari prosedur ini dari library OpenGL yakni (GLubyte key, GLint x, GLint y). Dimana isi dari prosedur ini adalah if (key == 'a' || key == 'A') z+=2; dimana setiap user menekan tombol ‘a/A’ pada keyboard nilai z akan melakukan increment atau penambahan nilai z pada objek sebanyak 2 atau pada tampilan akan melakukan proses zoom in. Sedangkan if (key == 'd' || key == 'D') z-=2; merupakan fungsi untuk zoom out pada objek dengan mengurangi (decrement) nilai z sebanyak 2 setiap user menekan tombol ‘d/D’. Koding zoom in dan zoom out : void Keyboard (GLubyte key, GLint x, GLint y) { if (key == 'a' || key == 'A') z+=2; if (key == 'd' || key == 'D') z-=2;
  • 7. Zoom Out (Tombol D) : Zoom In (Tombol A) :
  • 8. Rotasi Citra : Pada rotasi citra, menggunakan fungsi dari if (key == 'x' || key == 'X') { x1=1; y1=0; z1=0; sudut +=10; yang berfungsi jika user menekan tombol ‘x/X’ maka proses rotasi akan dilakukan dengan pemberian nilai x1=1, nilai y1=0, z1=0 dan pada nilai sudut melakukan proses increment setiap tombol ‘x/X’ ditekan dengan nilai increment sebanyak 10, sehingga Citra atau gambar berputar dengan titik sumbu x. Koding Rotasi pada sumbu x : Untuk rotasi sesuai dengan sumbu y, menggunakan perintah if (key == 'y' || key == 'Y') { x1=0; y1=1; z1=0; sudut +=-10; dimana setiap user menekan tombol ‘y/Y’ maka proses rotasi akan dilakukan dengan nilai x1= 0, y1 diberikan nilai 1, z1 = 0 dan nilai sudut akan melakukan increment sebanyak -10 (kebelakang). if (key == 'x' || key == 'X') { x1=1; y1=0; z1=0; sudut +=10; }
  • 9. Koding rotasi pada sumbu y : Untuk rotasi sesuai dengan sumbu z, menggunakan perintah if (key == 'z' || key == 'Z') { x1=0; y1=z; z1=1; sudut +=-10; dimana setiap user menekan tombol ‘y/Y’ maka proses rotasi akan dilakukan dengan nilai x1 = 0, y1 = 0 1, z1 diberikan nilai 1 dan nilai sudut akan melakukan increment sebanyak -10 maka citra akan berputar pada poros. Koding rotasi pada sumbu z : if (key == 'y' || key == 'Y') { x1=0; y1=1; z1=0; sudut +=-10; } if (key == 'z'|| key == 'Z') { x1=0; y1=0; z1=1; sudut +=-10; }
  • 10. Fungsi fullscreen menggunakan perintah if ( key == 'f'|| key == 'F') { glutFullScreen ();} dimana jika user menekan tombol ‘f/F’ pada keyboard maka fungsi dari library openGL glutFullScreen (); maka tampilan window run dari program ini akan menjadi fullscreen. Koding fullscreen : if ( key == 'f'|| key == 'F') { glutFullScreen (); }
  • 11. Main Program Untuk main program menggunakan int main (int argc, char **argv) dimana isi dari main program adalah memanggil mengembalikan semua prosedur – prosedur yang ada. Sehingga saat program di run akan menjalankan semua prosedur yang dipanggil dalam main program ini. glutInitWindowPosition (1,1); akan menampilkaan jendela tampilan hasil run pada koordinat (1,1) atau letak menampilkan window pada pojok kiri atas. Kemudian pemanggilan fungsi dari glutInitWindowSize (w,h); merupakan size (weight dan Height) atau ukuran window saat program dijalankan di mana nilai w = 800 dan h = 600. Untuk fungsi glutCreateWindow ("TUGAS GRAFKOM PERBAIKAN CITRA (ROTASI CITRA DAN FULLSCREEN)") adalah memberikan judul pada window dengan isi judul “TUGAS GRAFKOM PERBAIKAN CITRA (ROTASI CITRA DAN FULLSCREEN)”, kemudian glutKeyboardFunc (Keyboard); untuk menjalankan fungsi dari input keyboard dari user. Koding main program : int main (int argc, char **argv) { glutInit (&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA); glutInitWindowPosition (1,1); glutInitWindowSize (w,h); glutCreateWindow ("TUGAS GRAFKOM PERBAIKAN CITRA (ROTASI CITRA DAN FULLSCREEN)"); gluOrtho2D (-w/2,w/2,-h/2,h/2); glutDisplayFunc (renderScene); glutReshapeFunc (resize); glutKeyboardFunc (Keyboard); glutTimerFunc (1,timer,0); glutMainLoop (); }
  • 13. BAB III KESIMPULAN Dari pembahasan pokok diatas dapat ditarik kesimpulan bahwa Pemrograman C++ dengan Library OpenGL dilakukan untuk menghasilkan suatu gambar di monitor secara manual. Secara lebih spesifik lagi OpenGL adalah kumpulan standard API (Application Programming Interface) yang menghubungkan software dengan hardware grafis untuk menampilkan gambar 2D dan 3D. Intinya OpenGL itu adalah kumpulan library untuk mengakses hardware (GL= graphical library). OpenGL dalam menghasilkan suatu gambar memerlukan beberapa directory tambahan yaitu GLUT (GL Utility Toolkit) adalah pustaka yang dibuat untuk membantu OpenGL dalam hal I/O ke dalam sistem operasi secara low-level. Dengan kata lain, GLUT yang bertanggung jawab membuat jendela untuk OpenGL. OpenGL juga merupakan suatu antarmuka antara software dengan hardware grafis. Antarmuka ini memiliki ratusan function untuk menghasilkan citra obyek 3D dengan warna yang berkualitas tinggi. Sifatnya yang independent menyebabkan OpenGL dapat digunakan di hampir seluruh bahasa pemrograman yang tersedia. Dengan kata lain, OpenGL hanya menyediakan function dan library yang diperlukan untuk menghasilkan citra, sedangkan sintak program tergantung kepada bahasa pemrograman yang digunakan.
  • 14. DAFTAR PUSTAKAN http://arsipbertuah.blogspot.co.id/2015/01/tugas-transformasi-2d-dan-3d-opengl-c.html (di akses pada 27 oktober 2015) http://indonesiaberkicau.com/apa-itu-opengl/ (diakses pada 27 oktober 2015) http://programgagal.blogspot.co.id/2013/02/sejarah-dan-pengertian-bahasa-c-dan-c.html (diakses pada 27 otober 2015) http://faqihshofyan.blogspot.co.id/2014/05/pengantar-pemrograman-opengl-di.html (diakses pada 27 oktober 2015)
  • 15. LAMPIRAN Run Program : Fungsi Zoom Out (Tombol d) : Fungsi Zoom In (Tombol a) :
  • 16. Fungsi Rotasi sumbu x (Tombol x) :
  • 17. Fungsi Rotasi sumbu y (Tombol y) : Fungsi Rotasi sumbu z (Tombol z) :
  • 19. Coding Program : #include <GL/glut.h> #include <iostream> #include <glGL.h> #include <glGLU.h> #include <windows.h> int w=800, h=600, z=0; int x1=0, y1=0, z1=0, sudut=0; void renderScene (void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor (0, 0, 0, 0); glLoadIdentity (); glTranslatef (0, 0, z); glRotatef (sudut, x1, y1, z1); glColor3f(1, 1, 0); glutWireSphere(2,90,90);//fungsi bola glutSolidSphere(2,90,90) glColor3f(1,0,0); glutWireTorus (4, 2, 90, 30);//fungsi donat glutSwapBuffers (); } void resize (int w1, int h1) { glViewport (0, 0, w1, h1); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (45.0,(float) w1/(float) h1,1.0, 100.0); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); } void Keyboard (GLubyte key, GLint x, GLint y) {
  • 20. if (key == 'a' || key == 'A') z+=2; if (key == 'd' || key == 'D') z-=2; if (key == 'x' || key == 'X') { x1=1; y1=0; z1=0; sudut +=10; } if (key == 'y' || key == 'Y') { x1=0; y1=1; z1=0; sudut +=-10; } if (key == 'z'|| key == 'Z') { x1=0; y1=0; z1=1; sudut +=-10; } if ( key == 'f'|| key == 'F') { glutFullScreen (); } { int foo; foo = x + y; if ('q' == key || 'Q' == key || 27 == key) exit (0); } } void timer (int value) { glutPostRedisplay (); glutTimerFunc (1,timer,0); }
  • 21. int main (int argc, char **argv) { glutInit (&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA); glutInitWindowPosition (100,100); glutInitWindowSize (w,h); glutCreateWindow ("TUGAS GRAFKOM(CITRA LINGKARAN)"); gluOrtho2D (-w/2,w/2,-h/2,h/2); glutDisplayFunc (renderScene); glutReshapeFunc (resize); glutKeyboardFunc (Keyboard); glutTimerFunc (1,timer,0); glutMainLoop (); }