GRAFIKA KOMPUTER
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.
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
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).
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 :
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 :
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 ();
}