Posted by : Unknown
Rabu, 01 Mei 2013
Dalam
pemrograman grafis berbasis openGL, kita tidak hanya dapat membuat suatu objek
2 dimensi/3 dimensi. tetapi kita juga dapat menggerakkan suatu
objek/menganimasikannya. Animasi yang dimaksud adalah memindahkan posisi suatu
objek sehingga hasilnya objek tersebut akan terlihat bergerak. Untuk membuat
animasi, kita dapat memanfaatkan fungsi timer yang tersedia pada library
pemrograman openGL. Kita dapat memanfaatkan fungsi glutTimerFunc(unsigned
milis,Glut function(callback),int value); dimana parametenya waktu unsigned
milis yang digunakan untuk mengontrol suatu animasi
berdasarkan waktu, Glut function(callback) yang digunakan untuk memanggil fungsi timernya.
Contoh implementasi dari animasi 2 dimensi ini adalah sebagai berikut:
Animasi
Bintang:
#include "stdlib.h"
#include "glut.h"
int x=0;
int z=0;
void Bintang(){
glBegin(GL_POLYGON);
glVertex2f(-10.,-13.);
glVertex2f(0.,80.);
glVertex2f(30.,30.);
glVertex2f(90.,40.);
glVertex2f(50.,0.);
glVertex2f(80.,-50.);
glVertex2f(25.,-25.);
glVertex2f(-15.,-75.);
glVertex2f(0.,25.);
glVertex2f(-70.,0.);
glEnd();
}
void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,1,1);
glRotatef(x,0,0,1);
Bintang();
glFlush();
}
void timer (int value){
if (z <= 360){
x = 1;
z +=1;
}
glutPostRedisplay();
glutTimerFunc(5,timer,0);
}
void main(int argc,char **argv){
glutInit(&argc,argv);
glutInitWindowPosition(100,100);
glutInitWindowSize(480,480);
glutCreateWindow("Stars");
gluOrtho2D(-320.,320.,-320.,320.);
glutDisplayFunc(renderScene);
glutTimerFunc(1,timer,0);
glutMainLoop();
}
Script
di atas akan menghasilkan tampilan bintang yang berotasi berputar berlawanan
jarum jam, seperti gambar berikut:
Penjelasan:
Langkah
awal dalam membuat animasi pada script di atas adalah membuat objek terlebih
dahulu dengan menentukan ukuran letak setiap koordinat yang. Kemudian untuk tampilan
seperti pemberian warna suatu objek, dapat menggunakan fungsi glcolor(). Untuk
merotasi objek dapat menggunakan fungsi glrotate(). Dan melakukan render dengan
looping seperti yang tertera pada fungsi renderScene di atas.
Pada fungsi timer, digunakan untuk mengatur kecepatan animasi objek pada
program dengan mengatur time delay. Kemudian glutPostRedisplay
untuk
mengirimkan perintah untuk mengaktifkan display secara berkala (looping).
Setelah pengaturan waktu delay
pada objek, kita tinggal mengatur posisi, ukuran jendela tampilan juga
pemanggilan fungsi render dan timer pada objek.
void main(int argc,char **argv){
BalasHapusEror mulu gan :( solusi nyaa