Anda di halaman 1dari 15
Poltek NSC - 2015
Poltek NSC - 2015
Pendahuluan Tentang OpenGL Pustaka OpenGL Installer OpenGL Persiapan Instalasi OpenGL pada DEVC++ (Freeglut)
Pendahuluan Tentang OpenGL Pustaka OpenGL Installer OpenGL Persiapan Instalasi OpenGL pada DEVC++ (Freeglut)

Pendahuluan Tentang OpenGL Pustaka OpenGL Installer OpenGL Persiapan Instalasi OpenGL pada DEVC++ (Freeglut) Contoh Aplikasi Bentuk Keluaran Aplikasi Daftar Pustaka Daftar Buku Referensi

Distributed Computing merupakan salah satu bagian dari Ilmu Komputer yang mempelajari penggunaan terkoordinasi dari

Distributed Computing merupakan salah satu bagian dari Ilmu Komputer yang mempelajari penggunaan terkoordinasi dari komputer yang secara fisik atau lokasi terpisah/terdistribusi. API (Applications Programming Interface) adalah sekumpulan perintah, fungsi, dan protokol yang dapat digunakan oleh programmer saat membangun perangkat lunak untuk sistem operasi tertentu. API memungkinkan programmer untuk menggunakan fungsi standar untuk berinteraksi dengan sistem operasi. Pada grafika komputer, contoh produk API diantaranya : OpenGL, Direct3D, OGRE, dan masih banyak lagi.

OpenGL (Open Graphics Library ) adalah spesifikasi standar yang dapat di definisikan pada lintas bahasa
OpenGL (Open Graphics Library ) adalah spesifikasi standar yang dapat di definisikan pada lintas bahasa

OpenGL (Open Graphics Library) adalah spesifikasi standar yang dapat di definisikan pada lintas bahasa pemrograman, lintas platform API untuk write, dan juga menjalankan aplikasi untuk grafis 2D dan 3D. OpenGL terdiri dari 250 fungsi berbeda yang dapat

digunakan untuk menam p ilkan scene 3D kompleks pada komputer biasa. OpenGL secara luas digunakan dalam CAD, virtual reality, visualisasi ilmiah, visualisasi informasi, simulasi penerbangan, dan juga dalam game. OpenGL masih menjadi standar programming untuk beberapa console, bahkan PDA dengan system operasi Windows CE masih menggunakan OpenGL sebagai standar grafik hardwarenya.

ang

y

OpenGL dapat berjalan pada berbagai system operasi (Multiplatform), namun banyak sekali cara yang menuliskan program
OpenGL dapat berjalan pada berbagai system operasi (Multiplatform), namun banyak sekali cara yang menuliskan program

OpenGL dapat berjalan pada berbagai system operasi (Multiplatform), namun banyak sekali cara yang menuliskan program OpenGL, diantaranya :

Secara langsung sebagai Win32 API Menggunakan GLUT atau FreeGLUT Menggunakan SDL(Single DirectMedia Layer) Menggunakan Alegro Dan masih banyak lagi

Core OpenGL (GL) : berisi ratusan fungsi yang diawali dengan " gl " (misal glColor,
Core OpenGL (GL) : berisi ratusan fungsi yang diawali dengan " gl " (misal glColor,

Core OpenGL (GL) : berisi ratusan fungsi yang diawali dengan "gl" (misal glColor, glVertex, glTranslate, glRotate). Pemodelan Objek GL merupakan sekumpulan bentuk primitif, seperti titik, garis, dan polygon. OpenGL Utility Library (GLU): dibangun diatas core OpenGL untuk memberikan utiliti penting dan membangun lebih banyak model (seperti permukan quadric) surfaces). Fungsi GLU diawali dengan "glu" (contoh :

gluLookAt, gluPerspective) OpenGL Utilities Toolkit (GLUT): memberikan dukungan untuk dapat beroperasi dengan OS (seperti : membuat window, penanganan keyboard dan mouse), and dan membangun lebih banyak model (seperti :

sphere(bola) and torus(donat) ). Fungsi GLUT diawali dengan "glut" (contoh : glutCreatewindow, glutMouseFunc). Catatan dari opengl.org:

"GLUT dirancang untuk membangun program OpenGL dari ukuran kecil hingga menengah. Sehingga GLUT hanya cukup untuk belajar OpenGL dan mengembangkan aplikasi sederhana. GLUT adalah sederhana, mudah dan kecil OpenGL Extension Wrangler Library (GLEW): merupakan lintas platform pustaka open-source C/C++ loading ekstensi. GLEW memberikan mekanisme runtime yang efisien untuk menentukan ekstensi OpenGL yang mana yang mendukung platform tujuan. Sumber dan pre-build binary terdapat pada situs : http://glew.sourceforge.net/.

File header : " gl.h untuk core OpenGL, " glu.h " untuk GLU, dan "

File header : "gl.h untuk core OpenGL, "glu.h" untuk GLU, dan "glut.h" (atau "freeglut.h") untuk GLUT, secara khusus ada difolder "include\GL . Pustaka static: sebagai contoh, pada Win32,

"libo p en g l32 . a" untuk core O p enGL

g untuk GLU, "libglut32.a" (atau "libfreeglut.a" atau "glut32.lib") untuk GLUT, secara khusus ada difolder "lib .

"lib lu32 . a"

,

Pustaka (optional) shared : sebagai contoh, "glut32.dll" (atau "freeglut.dll") untuk GLUT dibawah Win32, secara khusus ada difolder "bin" atau "c:\windows\system32".

1. Download freeglut pada http://www.transmissionzero.co.uk/software/freeglut-devel/ atau disini 2. Ekstrak
1. Download freeglut pada http://www.transmissionzero.co.uk/software/freeglut-devel/ atau disini 2. Ekstrak
1. Download freeglut pada http://www.transmissionzero.co.uk/software/freeglut-devel/ atau disini 2. Ekstrak
1. Download freeglut pada http://www.transmissionzero.co.uk/software/freeglut-devel/ atau disini 2. Ekstrak
1. Download freeglut pada http://www.transmissionzero.co.uk/software/freeglut-devel/ atau disini 2. Ekstrak

1. Download freeglut pada http://www.transmissionzero.co.uk/software/freeglut-devel/ atau disini

2. Ekstrak file tersebut kedalam folder tertentu (khusus, misal OPENGL) terdiri atas :

Folder lib : libopengl32.a, libfreeglut.a, libglu32.a

Folder include \GL: freeglut.h, glut.h

Folder bin : freeglut.dll atau glut.dll

3. Buatlah project serta disimpan pada folder tertentu

4. Lakukan pengaturan PATH pada System properties + advanced + environment variables untuk :

Header pada folder include GL

Static lib pada folder lib

Shared library (glut32.dll atau freeglut.dll).

5. Lakukan pengaturan project option pada :

Parameters linker : -lopengl32 lglu32 lfreeglut

Deklarasi header #include <windows.h> #include <GL/glut.h> Penanganan t Ob jec void display() {
Deklarasi header #include <windows.h> #include <GL/glut.h> Penanganan t Ob jec void display() {

Deklarasi header

#include <windows.h> #include <GL/glut.h>

Penanganan t

Ob jec

void display()

{

glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(-0.5f, -0.5f); glColor3f(0.0f, 1.0f, 0.0f); glVertex2f( 0.5f, -0.5f); glColor3f(0.0f, 0.0f, 1.0f); glVertex2f( 0.5f, 0.5f); glColor3f(1.0f, 0.0f, 1.0f); glVertex2f(-0.5f, 0.5f); glEnd(); glFlush();

}

Penanganan Keyboard

void keyboard (unsigned char key, int x, int y)

{

switch (key) { case 27: exit(0); } glutPostRedisplay();

}

Program Utama

int main(int argc, char** argv)

{

glutInit(&argc, argv); glutInitWindowSize(500, 500); glutInitWindowPosition(0, 0); glutCreateWindow(” Test OpenGL”); glutKeyboardFunc(keyboard); glutDisplayFunc(display); glutMainLoop(); return 0;

}

  Perintah   Arti   Keterangan glVertex2i(x,y); Lokasi titik berada (x,y) Tipe argumennya
  Perintah   Arti   Keterangan glVertex2i(x,y); Lokasi titik berada (x,y) Tipe argumennya
  Perintah   Arti   Keterangan glVertex2i(x,y); Lokasi titik berada (x,y) Tipe argumennya
 

Perintah

 

Arti

 

Keterangan

glVertex2i(x,y);

Lokasi titik berada (x,y)

Tipe argumennya adalah integer dan 2D (x,y)

glVertex2f(x,y);

Lokasi titik berada (x,y)

Tipe argumennya adalah float dan 2D (x,y)

glVertex3i(x,y,z);

Lokasi titik berada (x,y,z)

Tipe argumennya adalah integer dan 3D (x,y,z)

glVertex3f(x,y,z);

Lokasi titik berada (x,y,z)

Tipe argumennya adalah float dan 3D (x,y,z)

glClearColour(R,G,B,);

Warna latar belakang

Empat komponen warna RGBA

glColor3f(R,G,B)

Warna latar muka

 

Tiga komponen warna (RGB)

 

g

lC

o or r4f(R , G , B , )

l

W

arna rn l a t ar r mu m

k

a

Em mpa

t k

omponen m n n warna rn

(RGBA)

glBegin(GL_POINTS);

Titik

 

Objek primitif

 

glBegin(GL_LINES);

Garis

 

Objek primitif

 

glBegin(GL_LINE_STRIP);

Poligaris

 

Objek primitif

 

glBegin(GL_LINE_LOOP);

Poligaris tertutup

 

Objek primitif

 

glBegin(GL_TRIANGLES);

Segitiga

 

Objek primitif

 

glBegin(GL_TRIANGLE_STRIP);

Segitiga

 

Objek primitif

 

glBegin(GL_TRIANGLE_FAN);

Segitiga

 

Objek primitif

 

glBegin(GL_QUADS);

Segiempat

 

Objek primitif

 

glBegin(GL_QUADS_STRIP);

Segiempat

 

Objek primitif

 

glBegin(GL_LINE_STIPPLE);

Garis putus-putus

 

Objek primitif

 

glBegin(GL_POLY_STIPPLE);

Poligon dengan pola tertentu

Objek primitif

 
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Untuk memberi warna latar glClear(GL_COLOR_BUFFER_BIT); Untuk mengosongkan memori

glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Untuk memberi warna latar

glClear(GL_COLOR_BUFFER_BIT);

Untuk mengosongkan memori buffer glBegin(GL_QUADS);

Untuk awal mendesain gambar primitif glEnd();

Untuk mengakhiri mendesain gambar primitif glColor3f(1.0f, 0.0f, 0.0f);

Untuk memberi warna pada gambar primitif glVertex2f(-0.5f, -0.5f);

Untuk menggambar titik 2D glFlush(); Untuk merender gambar

Fungsi GL

glutInit(&argc, argv);

 

Untuk menyiapkan lingkungan openGL glutInitWindowSize(500, 500);

Untuk menyiapkan ukuran jendela untuk openGL

glutInitWindowPosition(0, 0);

 

Untuk menyiapkan lokasi jendela untuk openGL glutCreateWindow(” Test OpenGL”); Untuk membuat e jendela untuk o enGL sekali us

se a gus

u

ua je

e a u u ope

memberi judul glutKeyboardFunc(keyboard); Untuk mengaktifkan fungsi keyboard glutDisplayFunc(display);

Untuk mengaktifkan fungsi penyaji glutMainLoop(); Untuk menjalankan openGL secara berulang

glutIdleFunc(renderScene);

Untuk tetap melakukan render pada saat aplikasi sedang idle

Fungsi GLUT

glutInit berfungsi untuk inisialisasi secara umum terhadap nilai-nilai yang ada pada library GLUT. glutMainLoop() ,
glutInit berfungsi untuk inisialisasi secara umum terhadap nilai-nilai yang ada pada library GLUT. glutMainLoop() ,

glutInit berfungsi untuk inisialisasi secara umum terhadap nilai-nilai yang ada pada

library GLUT. glutMainLoop() , yaitu digunakan untuk menjalankan program.

glutMainLoop() , yaitu digunakan untuk menjalankan program. Untuk menginisialisasi modus display dilakukan dengan

Untuk menginisialisasi modus display dilakukan dengan memanggil

fungsi: glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) pada procedure myInit(); glOrtho digunakan untuk membuat kotak tempat obyek yang sedang digambar.

glutDisplayFunc(display)

OpenGL mother site @ www.opengl.org . Nehe OpenGL Tutorials @ http://nehe.gamedev.net . One of the
OpenGL mother site @ www.opengl.org . Nehe OpenGL Tutorials @ http://nehe.gamedev.net . One of the

OpenGL mother site @ www.opengl.org. Nehe OpenGL Tutorials @ http://nehe.gamedev.net. One of the best sites on OpenGL. Nate Robin's OpenGL Tutor @ http://www.xmission.com/~nate/opengl.html. One of the best sites on OpenGL. Provides a few animated programs to illustrate OpenGL functions, such as gluLookAt. Nate Robin also provide the original GLUT library. Lighthouse 3D tutorials @

http://www.lighthouse3d.com.

JOGL mother site @ https://jogl.dev.java.net.

(Red book) "OpenGL Programming Guide", 6th Eds, 2008, Addison- Wesley. A must-read for OpenGL programmers.
(Red book) "OpenGL Programming Guide", 6th Eds, 2008, Addison- Wesley. A must-read for OpenGL programmers.
(Red book) "OpenGL Programming Guide", 6th Eds, 2008, Addison- Wesley. A must-read for OpenGL programmers.

(Red book) "OpenGL Programming Guide", 6th Eds, 2008, Addison- Wesley. A must-read for OpenGL programmers. (Blue book) "OpenGL Superbible - Comprehensive Tutorial and Reference", 4th eds, Addison-Wesley. (Orange Book) "OpenGL Shading Language".

Edward Angel, "OpenGL - A Primer", 3rd eds, Pearson Education. A very "thin" book that gives a good introduction about OpenGL. The codes in C++ uses GLUT, which greatly simplifies interacting with the Windows OS. Edward Angel and David Shreiner "Interactive Computer Graphics - A top-down approach using OpenGL", 6th ed, Pearson Education,

2012.

Good undergraduate text book on Computer Graphics.

JungHyun Han, "3D Graphics for Game Programming", CRCPress,

2011.

Good and simple explanation for the Graphics Renderer Pipeline and the various transforms, with many nice diagrams.