Kamis, 19 November 2015

OpenGL GLUT dengan DevCpp

Selamat pagi rekan-rekan sekalian, salam hangat selalu, di pagi ini ogut masih membahas tetang DevCpp, dan kali ini ogut akan memberi contoh program yang menggunakan GLUT.



Untuk menggunakan GLUT rekan-rekan harus mempunyai header, library dan DLL tambahan yang telah ogut sediakan dan tinggal rekan-rekan download saja.

Setelah di-download diperlukan tiga buah file tambahan yang harus Anda tempatkan di folder yang benar.

glut.h
Tempatkan file tersebut di folder header DevCpp seperti gambar di bawah ini.


libglut32.a
Tempatkan file library di folder seperti gambar di bawah ini, jika ada versi sebelumnya replace library yang lama  dengan yang baru Anda download.


glut32.dll
Copy ke foleder project DevCpp berada atau tempatkan ke dalam folder windows/system32, gambar di bawah ogut copy file glut32.dll ke folder project DevCpp berada.


Tahap selanjutnya linker harus rekan-rekan tambahkan sehingga compiler DevCpp dapat membuat executable program, cara menambahkan linker seperti berikut ini.

Klik menu Project lalu pilih Project Options.


Klik Tab Paramaters lalu klik tombol Add Library or Object.


Lalu pilih folder dimana library DevCpp berada (default Dev-Cpp/lib)


Tambahkan library libwinmm.a seperti gambar di bawah ini lalu klik tombol Open.


Ulangi proses di atas dengan menambahkan libglut32.a, libopengl32.a dan libglu32.a, jika telah selesai klik tombol OK.


Selesai menambahkan linker saatnya mengetik kode program, ini adalah kode program nya.

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

/////////////////Deklarasi Variable Global
float sudut_putar;
float kecepatan_putar;
__int32 waktu_awal, waktu_sekarang, waktu_selisih;

/////////////////Deklarasi Function(s)
void glut_idle_F();
void glut_display_F();

/////////////////MAIN///////////////////
int main(int argc, char **argv)
{  
int L_Window = 750, T_Window = 500;

//Inisialisasi variable global
sudut_putar = 0;
kecepatan_putar = 1.0f;
waktu_selisih = 10;

// Insialisasi OpenGL
printf("Inisialisasi OpenGL\n");
glutInitWindowSize(L_Window, T_Window);
glutInit(&argc, argv); 
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);      
glutCreateWindow("Belajar Grafik 3D");

glEnable(GL_DEPTH_TEST); 

glMatrixMode(GL_PROJECTION);
gluPerspective(45.0, (float)L_Window/(float)T_Window, 1.0f, 200.0f);//fungsi perspektif  
glMatrixMode(GL_MODELVIEW);

glutIdleFunc(glut_idle_F);
glutDisplayFunc(glut_display_F);  

glutMainLoop(); 
return 0;             
}

/////////Function(s)
void glut_idle_F()
{    
waktu_awal = timeGetTime();
do 
{
waktu_sekarang = timeGetTime();

} while ( (waktu_sekarang - waktu_awal) <= waktu_selisih );


    printf( "waktu sekarang: %d \n", waktu_sekarang - waktu_awal);

sudut_putar = sudut_putar + kecepatan_putar;
if (sudut_putar >360.0)
sudut_putar = 0.0f;

glutPostRedisplay();
}

                      
void glut_display_F()
{
printf( "Display Object(s) \n");
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity(); 

glTranslatef(0.0f,0.0f,-8.0f);   
glRotatef(15,1.0f,0.0f,0.0f);
glRotatef(-15,0.0f,1.0f,0.0f);

//gambar sumbu +X
glColor3f(1.0f,0.0f,0.0f);
glBegin(GL_LINES);  
glVertex3f(0.0f,0.0f, 0.0f); 
glVertex3f(3.0f,0.0f, 0.0f);
glEnd();

//gambar sumbu -X
glEnable(GL_LINE_STIPPLE); 
glLineStipple(1,0x7733); 
glBegin(GL_LINE_STRIP);  
glVertex3f(0.0f,0.0f, 0.0f); 
glVertex3f(-3.0f,0.0f, 0.0f);
glEnd();
glDisable(GL_LINE_STIPPLE);

//gambar sumbu +Y
glColor3f(0.0f,1.0f,0.0f);
glBegin(GL_LINES);  
glVertex3f(0.0f,0.0f, 0.0f); 
glVertex3f(0.0f,3.0f, 0.0f);
glEnd();

//gambar sumbu -Y
glEnable(GL_LINE_STIPPLE);
glLineStipple(1,0x7733);
glBegin(GL_LINE_STRIP);  
glVertex3f(0.0f,0.0f, 0.0f); 
glVertex3f(0.0f,-3.0f, 0.0f);
glEnd();
glDisable(GL_LINE_STIPPLE);

//gambar sumbu +Z
glColor3f(0.0f,0.0f,1.0f);
glBegin(GL_LINES);  
glVertex3f(0.0f,0.0f, 0.0f); 
glVertex3f(0.0f,0.0f, 3.0f);
glEnd();

//gambar sumbu -Z
glEnable(GL_LINE_STIPPLE);
glLineStipple(1,0x7733);
glBegin(GL_LINE_STRIP);  
glVertex3f(0.0f,0.0f, 0.0f); 
glVertex3f(0.0f,0.0f, -3.0f);
glEnd();
glDisable(GL_LINE_STIPPLE);

glRotatef(sudut_putar,0.0f,1.0f,0.0f);

//buat segitiga
glBegin(GL_POLYGON);  
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(0.0f,0.0f, 1.0f); 
glColor3f(1.0f,0.0f,1.0f);
glVertex3f(1.0f,0.0f, 0.0f);
glColor3f(0.0f,1.0f,1.0f);
glVertex3f(0.7f,1.0f, 0.7f);
glEnd();

glutSwapBuffers();
}

Tekan tombol F9 di keyboard Anda (jangan keyboard tetangga yang Anda tekan), maka program akan menampilkan segitiga 3 dimensi yang berputar.


Salam hangat


Heriady
heriady.yoh@gmail.com



Artikel terkait

Instalasi DevCPP untuk proyek OpenGL

Program OpenGL 3D dengan Developer CPP (DevCPP)