GLUT pada dasarnya dibangun untuk menciptakan aplikasi grafis menggunakan
pemrograman yang bersifat procedural. Glut hanya akan merespon jika ada event
(kejadian). Salah satu event tersebut ialah interaksi dengan keyboard. Selain itu openGL juga menyediakan fungsi
untuk menambahkan interaksi dengan mouse.
- Fungsi dasar pembuatan interaksi dengan menggunakan MouseFunction
GLUTAPI void APIENTRY
glutMouseFunc(void (GLUTCALLBACK *func)(int button, int
state, int x, int
y));
Paramater func
adalah fungsi yang akan ditangani dengan event klik mouse.
GLUTAPI void APIENTRY
glutMotionFunc(void *func(int x, int y));
- Inisialisasi dalam penggunaan MouseFunction
void mouse(int
button, int state, int
x,int y){
if(button==GLUT_LEFT_BUTTON &&
state==GLUT_DOWN)
drawDot(x,480-y);
if(button==GLUT_RIGHT_BUTTON &&
state==GLUT_DOWN)
drawDot2(x,480-y);
if(button==GLUT_MIDDLE_BUTTON &&
state==GLUT_DOWN)
drawDot3(x,480-y);
}
void motion(int x,int y){
}
|
Keterangan :
a.
GLUT_LEFT_BUTTON untuk inisialisasi button mouse kiri.
b.
GLUT_RIGHT_BUTTON untuk inisialisasi button mouse kanan.
c.
GLUT_MIDDLE_BUTTON untuk inisialisasi button mouse tengah.
d.
GLUT_DOWN adalah untuk inisialisasi ketika tombol mouse ditekan.
e.
GLUT_UP adalah untuk inisialisasi ketika tombol mouse dilepaskan.
Kemudian pada main program
perlu menambahkan fungsi untuk callback fungsi
MouseFunction.
glutMouseFunc(mouse);
glutMotionFunc(motion);
|
void drawQuad()
{
glBegin(GL_TRIANGLES);
glVertex2f(-50.,-50.);
glVertex2f(50.,-50.);
glVertex2f(0,0);
glEnd();
}
void mouse(int button, int state, int xmouse, int ymouse){
if(button==GLUT_LEFT_BUTTON && state==GLUT_DOWN){
x = xmouse-(w/2);
y = (h/2)-ymouse;
f=0,ff=0,fff=1;
}
if(button==GLUT_MIDDLE_BUTTON && state==GLUT_DOWN ){
a=1.1;
b=1.1;
f=1,ff=0,fff=0;
}
if(button==GLUT_RIGHT_BUTTON && state==GLUT_DOWN ){
a=0.9;
b=0.9;
f=0,ff=1,fff=0;
}
}
void
renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glColor3f(f,ff,fff);
glTranslatef(x,y,z);
glScalef(a,b,0);
drawQuad();
glPopMatrix();
glFlush();
}
void timer(int value){
glutPostRedisplay();
glutTimerFunc(50,timer,0);
}
hasil :
No comments:
Post a Comment