Pendidikan Teknik Informatika Universitas Negeri Malang

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));
Fungsi di atas adalah fungsi pelengkap dari fungsi interaksi mouse untuk mendeteksi gerakan mouse.

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);
}

untuk dapat menggunakan interaksi mouse, fungsi yang digunakan adalah seperti contoh di atas. Sintaks di atas banyak menggunakan call back function yang telah disediakan oleh GLUT itu sendiri. Untuk penjelasannya sebagai berikut:

untuk contohnya:

if(button==GLUT_RIGHT_BUTTON && state==GLUT_DOWN)
drawDot2(x,480-y);

artinya adalah fungsi akan berjalan ketika tombol kanan mouse ditekan akan mengeksekusi fungsi dar drawDot2(x, 480-y) dan melakukan pencatatan lokasi koordinat dimana tombol mouse kanan ditekan.
GLUT_LEFT_BUTTON untuk inisialisasi button mouse kiri.
GLUT_RIGHT_BUTTON untuk inisialisasi button mouse kanan.
GLUT_MIDDLE_BUTTON untuk inisialisasi button mouse tengah.
Fungsi dari GLUT_DOWN adalah untuk inisialisasi ketika tombol mouse ditekan.
Fungsi dari GLUT_UP adalah untuk inisialisasi ketika tombol mouse dilepaskan.
Kemudian pada main program perlu menambahkan fungsi untuk callback fungsi MouseFunction.
glutMouseFunc(mouse);
glutMotionFunc(motion);

untuk lebih jelasnya silahkan mencoba menuliskan ulang sintaks dibawah ini:

#include 
#include 
#include 

void mouse(int button, int state, int x, int y){
	if(button==GLUT_LEFT_BUTTON)
		printf("tombol KIRI (%d, %d) \n", x,y);
	else if(button==GLUT_RIGHT_BUTTON)
		printf("tombol KANAN (%d, %d) \n", x,y);
	else
		printf("tombol TENGAH (%d, %d) \n", x,y);

	if(state==GLUT_DOWN)
	{printf("Tombol DITEKAN");}
	else
	{printf("tombol DILEPAS");}
}

void motion(int x, int y){

}

void renderscene(){
	glClear(GL_COLOR_BUFFER_BIT);
	glFlush();
}

void timerku(int value){
	glutPostRedisplay();
	glutTimerFunc(50, timerku, 0);
}

void main(int argc, char **argv){
	glutInit(&argc, argv);
	glutInitWindowSize(640, 640);
	glutCreateWindow("Hello GRAFKOM");
	gluOrtho2D(-50,50,-50,50);
	glutDisplayFunc(renderscene);
	glutTimerFunc(10, timerku, 0);
	glutMouseFunc(mouse);
	glutMainLoop();
}

jika sintaks di atas sudah dituliskan ulang, coba jalakan. Jika benar hasilnya akan menampilkan seperti gambar di bawah ini.

hasil interaksi

hasil interaksi

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

The WordPress.com Blog

The latest news on WordPress.com and the WordPress community.

%d bloggers like this: