Rabu, 19 Oktober 2011

OPEN GL


OpenGL (Open Graphics Library) adalah spesifikasi standar yang mendefinisikan sebuah cross-bahasa, cross-platform API untuk menulis aplikasi yang menghasilkan komputer 2D dan 3D grafis. Antarmuka terdiri dari lebih dari 250 panggilan fungsi yang berbeda yang dapat digunakan untuk menggambar tiga dimensi yang kompleks adegan-adegan dari primitif sederhana. OpenGL dikembangkan oleh Silicon Graphics Inc (SGI) pada tahun 1992 [2] dan secara luas digunakan dalam CAD, virtual reality, visualisasi ilmiah, visualisasi informasi, dan simulasi penerbangan. Hal ini juga digunakan dalam video game, di mana bersaing dengan Direct3D on Microsoft Windows platform (lihat vs OpenGL Direct3D). OpenGL dikelola oleh sebuah teknologi nirlaba konsorsium, yang Khronos Group.
Kali ini yang akan saya share adalah tentang materi perkuliahan GPU (Graphics Processing Unit) Programming (EL5130). Konten utama mata kuliah ini secara garis besar adalah implementasi teknis pemrograman OpenGL. Saya sendiri masih tergolong baru dalam pemrograman OpenGL ini. Sehingga harapannya, saya bisa lebih gamblang dalam menjelaskan segala sesuatunya dari kacamata orang yang masih awam dengan pemrograman OpenGL. Semoga bermanfaat…

OpenGL (Open Graphics Library) adalah standar API yang dapat digunakan untuk membuat aplikasi berbasis grafik, baik dua dimensi (2D) maupun tiga dimensi (3D). OpenGL ini bersifat cross-platform, artinya dapat dijalankan pada berbagai platform sistem operasi yang ada saat ini. Untuk informasi lebih lengkap mengenai hal-hal yang terkait dengan OpenGL dapat dibaca pada http://en.wikipedia.org/wiki/Opengl. Atau dapat juga dicari pada mesin pencari, contoh: google. Karena memang OpenGL sendiri telah banyak dibahas oleh kalangan praktisi, akademisi, maupun industri, yang notabene berkutat dalam implementasi pemrograman grafik 2D dan 3D.

Untuk membuat aplikasi menggunakan OpenGL, terlebih dahulu kita membutuhkan suatu konsepsi interfacing dalam implementasinya. Salah satu cara yang sudah umum digunakan adalah dengan membuat window-based OpenGL. Untuk dapat membuat konsep windowing pada OpenGL, kita memerlukan tool tertentu. Yang kita gunakan kali ini adalah GLUT (OpenGL Utility Toolkit). GLUT dipilih karena di dalamnya telah terdapat banyak fungsi yang dapat dipakai untuk pembuatan application window. Disamping itu, windowing pada GLUT juga bersifat independen terhadap sistem operasi, sehingga kita tidak perlu repot-repot untuk mengubah kode program jika diterapkan pada sistem operasi yang berbeda.

IDE yang digunakan
Kecenderungan implementasi pemrograman yang ada saat ini adalah dengan memanfaatkan IDE. Karena memang pada kenyataannya dunia pemrograman semakin lama akan semakin kompleks. Dengan banyaknya primitif-primitif atau fungsi-fungsi dasar yang telah dibungkus ke dalam berbagai struktur referensi library, maka sepertinya akan sangat menyusahkan jika kita tidak memanfaatkan IDE untuk membantu kita dalam memrogram. Secara pengertian, IDE (Integrated Development Environment) adalah suatu tool pengembangan yang di dalamnya minimal terdapat: editor kode program, compiler atau interpreter atau link ke compiler atau interpreter, builder, dan debugger. Banyak sekali IDE yang ada sekarang, beberapa contohnya adalah: Visual Studio, Codeblocks, Netbeans, Eclipse, dsb. Tapi sekarang kita tidak akan membahas lebih detail mengenai IDE.

Kembali pada pemrograman OpenGL, IDE yang saya gunakan adalah Microsoft Visual Studio 2008. Sehingga persiapan pertama yang kita butuhkan adalah pastikan bahwa Microsoft Visual Studio 2008 telah terinstal di komputer Anda, jika belum, maka berdoalah terlebih dahulu agar diberi kesabaran, lalu lakukan instalasi Microsoft Visual Studio 2008 dengan khidmat  .

Persiapan berikutnya – copy referensi yang dibutuhkan
Untuk dapat memanfaatkan fungsi-fungsi GLUT pada pemrograman OpenGL, terlebih dahulu kita memasukkan library atau referensi yang dibutuhkan. Berikut adalah langkah-langkahnya:

Copy glu32.dll, glut.dll, dan glut32.dll ke dalam folder C:\Windows\System32
Copy GL.h, GLAUX.h, GLU.h, dan glut.h ke dalam folder C:\Program Files\Microsoft Visual Studio 9.0\VC\include
Copy GLAUX.lib, GLU32.lib, dan glut32.lib ke dalam folder C:\Program Files\Microsoft Visual Studio 9.0\VC\lib
File-file tersebut dapat diperoleh dengan melakukan download gratis di webnya GLUT (http://www.glut.org). Atau, dapat juga dicari menggunakan mesin pencari.

Membuat project baru
Berikutnya, kita akan memulai dengan membuat project baru pada Microsoft Visual Studio 2008. Secara mendasar, langkah-langkahnya adalah sebagai berikut:

Buka aplikasi Microsoft Visual Studio 2008.
Pilih menu File -> New -> Project. Sehingga akan terbuka jendela dialog baru seperti di bawah ini.


Pilih Win32 Console Application dan beri nama projectnya, misal: Program01. Klik Next, kemudian pada bagian Additional Options, contreng pilihan Empty project. Tujuannya adalah agar project yang kita buat merupakan project yang kita mulai dari dasar, bukan dari template yang disediakan oleh Microsoft Visual Studio.
Jika project sudah berhasil tercreate, maka pada Microsoft Visual Studio di bagian paling kiri akan muncul folder project yang baru kita buat. Klik kanan pada folder Source Files, lalu pilih menu Add -> New Item, pilih C++ File (.cpp), kemudian beri nama, misal: main.
Buka file main.cpp pada editor kode program, lalu copy kode program berikut ini:
01
/* @Andik Taufiq
02
 * March, 13 2010 - Bandung, Indonesia
03
 */
04

05
#include <windows.h>
06
#include <stdio.h>
07
#include <stdlib.h>
08
#include <string.h>
09
#include <stdarg.h>
10
#include <glut.h>
11

12
void mydisplay()
13
{
14
    glClear(GL_COLOR_BUFFER_BIT); // Menghapus layar
15
    glBegin(GL_POLYGON);
16
    glVertex2f(-0.5, -0.5);
17
    glVertex2f(-0.5, 0.5);
18
    glVertex2f(0.5, 0.5);
19
    glVertex2f(0.5, -0.5);
20
    glEnd();
21
    glFlush();
22
}
23

24
int main(int argc, char** argv)
25
{
26
    printf("Hello World... Ini adalah Kotak 2D");
27
    glutCreateWindow("Program01 - Andik Taufiq");
28
    glutDisplayFunc(mydisplay);
29
    glutMainLoop();
30
}
Lakukan pengubahan properti program dengan memilih menu: Project -> Properties, atau tekan tombol Alt+F7. Pada Configuration Properties -> General -> Character Set pilih “Not Set”. Pada Configuration Properties -> Linker -> Input -> Additional Dependencies masukkan library-library yang dibutuhkan. Ketikkan: opengl32.lib glu32.lib glaux.lib odbc32.lib odbccp32.lib. Pada Configuration Properties -> C/C++ -> DIsable Spesific Warnings ketik 4996.
Lakukan kompilasi dan jalankan program dengan menekan tombol F5. Jika Anda beruntung, maka akan keluar jendela aplikasi seperti tampak pada gambar di bawah ini.


Program di atas merupakan contoh pembuatan polygon dengan memanfaatkan method GL_POLYGON dan ditentukan sebanyak empat (4) buah vertex yang membentuk pola persegi (bujur sangkar).
Berikut ini adalah tutorial untuk memrogram dengan menggunakan OpenGL dan Dev-C++. Dalam tutorial ini akan dijelaskan langkah-langkah awal untuk menghasilkan gambar sederhana dengan Dev-Cpp sebagai IDE-nya.



Pertama-tama, yang pasti, install Dev-Cpp dulu.


Lalu, download package GLUT di link ini. Akan ada link di tabel download. Setelah di-klik, maka kita bisa men-save package di harddisk komputer.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQYWo_ObPeL3uffCgpoWqdsX4G3lFIq-hdOc_gx8IXMiJk5U8oN9EWlvpPvwBVVvr4eRCKGbFE_Srl5zgCdbDLg0b6iREnzqTpuKIwhk-D-vJu2813Aoh9B6gX2uT79HolNn3C0tYIijc8/s320/save+glut.png

Setelah package tersedia, buka Dev-C++ dan klik menu Tools - Package Manager
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAlZa3TG4_TE1CCSY5Hlw2c9g-van-gHwaDkFVjTw8oHruUsTr7uyHg4ZSoOUeW8-MlTcBIr3y9v4P2fE8D6gBXZJSuXAnabmEXyLwYH9vhLbfstyiP27FuJzYFvW-H8c9_ufcQ7tGACuR/s320/package+manager.png

Lalu klik tombol Install yang berada di pojok kiri atas. Akan muncul window yang meminta file instalasi yang diinginkan. Pilihlah file Glut yang baru saja di-download tadi.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMtDaN2vonv4N4zZdwyBcFb2hWyUj4Dd6p51BevKHHQnzgjQ25uzfQBauKVOdcuKWYQYTrMV4Km_ELIS2kUWQycghbyuZb-okQhtzjLrq1vW8bip47FVdJshevAzCXWw0-Gok73Digfyab/s320/install.png

Lalu klik Open.

Setelah itu, akan muncul installation window. Tinggal klik Install dan tunggu hingga instalasi selesai. Lalu, klik Finish.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS3Mg_FDNl4JsSPKZXQI2Y-NimXbuFnt3I2tRxIxaTP71K2Fq9iLwLQYxnw2p_ILIg4KRtwQBgZHaGmXSszEgoa472YvsdK3CtiJj2V9yl10aDic5cyvUu65Qzd_A1Kwj8LafkB2Q-vZGR/s320/install2.png

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Ru0p7EeM-SBwPKmvvZCtdlv6tTviN6Fa9bVJuXUS887YNqfeHHaw8aLvwJMbF1NHL-ISssrFwa2IyOLTBCYVyiCDHHHVSVJn9cPmeNdLFwpZMbp4JYBgE2iAiZO6fiisQbIsS2EwphaH/s320/finish.png

Package yang baru saja di-install akan muncul di window Package Manager dengan nama glut.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifpLN5OTrJYy0vuOiKd5r3IRBjCLcR1UwbnZ35OncgtDZnjo7IK5buBPQc8ymHnTVa-09LOg4eWks-Wc9j1vzDG1TkSOQAENZSk3jw0yNyuhQKgI3fCiJ05jRrWT7h4MEaDeZF7czBuG0X/s320/exit.png 

Sampai saat ini, proses instalasi Package Glut telah selesai. Saatnya ngoding :D

Buat Project baru dengan cara klik menu File - New - Project.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAtCGujtxFZgeyJ1-O2Cnj-2tWxC71dKZHcuhvTiIGKvJFUdwI8fPIFtQ3GHvpXqjeG5qVVJTnofb1-Z7rH_L5_rhR2yfMo3Qoa4SvTfQAk4tNGMc3OO8FUHSO3UUWAhDXkxW6YSzfx1iQ/s320/new+project.png

Pilih project "Empty Project" dan beri nama pada kolom Name. Setelah itu klik OK. Lalu klik Save di tempat yang kamu inginkan.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioI0rcG2R9Rg6cB0Y1b1IN1PMl4p43ex1YIEHwR1J5upyxsDqoZS79tQehdNnJ6t_B7rsfLXo0ZXn_KLZybJ-_bSDyYGvO8apQCvHDpLWC3eBR6BXwZAXaS6Uk-4WnNQGIRdpk2zLJB162/s320/new+project+nama.png

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSdNJ8HiZJ8YQCdrRzdncz0tsOLzgIk5A8hgdb3ksXU8E52kXXR8GoIAENf8ZzideloW4YlN_0I-MDhRsj4PRF_z3uTCiprg7S5CJ44ak4yHUKZrc3sTXikR5mYCcmy3s1zm4InbovBm7s/s320/save+project.png

Project baru telah terbentuk, tetapi belum memiliki file. Oleh karena itu, klik kanan pada Project dan pilih New File.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe90SmGGdHQsJWu7zC3l_9abvBqG7NYM-10S_cHL4hqAWM1MyvBF07nr_4NhRil6o21Hpwg6ExdtT3txyhsKL2G_Dqr2N8Up71oyurKURv2FNFBhEh0YDu2pjCpkgHXTmjqIyIca5bid0p/s320/new+file.png

Akan muncul editor baru yang bernama default Untitled1. Di sinilah kita akan ngoding.

Misalkan saja kita ingin membuat segitiga Maxwell, maka tulis kodenya sebagai berikut.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <GL/glut.h>
#include <math.h>

void
display(void)
{
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_TRIANGLES);
    glColor3f(0.0, 0.0, 1.0);  /* blue */
    glVertex2d(-1, -(1*sqrt(3))/2);
    glColor3f(0.0, 1.0, 0.0);  /* green */
    glVertex2d(1, -(1*sqrt(3))/2);
    glColor3f(1.0, 0.0, 0.0);  /* red */
    glVertex2d(0, (1*sqrt(3))/2);
  glEnd();
  glFlush();  /* Single buffered, so needs a flush. */
}

int
main(int argc, char **argv)
{
  glutInit(&argc, argv);
  glutCreateWindow("single triangle");
  glutDisplayFunc(display);
  glutMainLoop();
  return 0;
}


Lalu, klik File - Save As untuk menyimpan kode di atas. Misalkan beri nama main.cpp.

Sebelum di-Compile, kita perlu menambahkan sesuatu. Klik menu Project - Project Options.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9CLGYLemjgcLz-N7UJASr1Kv4EyHHfjWI8kJ0n8ICXnptZTOXBgMnlxuDxBAq5VMtWggd6nfBpYR9XPugOoMmdvGwImzJgXkb9ASscbXZ1BfJ1kwR-OK_vEiPjSkh6Vg64V3EwdpUIYoR/s320/poject+options.png

Akan muncul windows Project Options. Klik tab Parameter dan akan muncul 3 field untuk diisi. Isilah field Linker dengan tulisan berikut:
-lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32

Lalu klik OK. 
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZjpF2ii8x4_oggLARPdWUDsCwRix79piBtkfK_4k2WRN734DXBFtxjTZsTem4m0OLE2TpqoSQhUVbKmBiWH1dZtEqzQq95aj4OX_XyEmIhZ6r7JFgxzgujrfKri-p2woQi0F8R7ts_xBl/s320/linker.png

Nah, sekarang compile dan run programnya dengan menekan tombol F9 untuk Dev-C++. Tada! 
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVRtTZUk8M-MzfmjkrSqQBEVtfYO2YyjDhLA42zbfZU-ZTd4bx2vsMV6DjiI-elFwXeoKFXjH9GUE8Pq0E-s1Hgjbr3aSea9OWfe_8DY-UD3z2RhnT8X4pd2rzL2c1Sg9bXvGqHv3lYR6v/s320/hasil.png

"Something" happens :D


Ohiya ada tutorial lainnya juga di sinisama di sini.
Ini adalah postingan kilat setelah pertama kali belajar OpenGL, oleh karena itu, penjelasannya masih kurang. Mungkin suatu saat akan saya edit.

Tidak ada komentar:

Posting Komentar