C++ / OpenGL [ 07 – Callbacks(2) ]

glutMouseFunc(func);

void glutMouseFunc(void (*f)(int button, int state, int x, int y))

(GLUT_UP yada GLUT_DOWN) mouse durumu asagi yukari

(GLUT_LEFT_BUTTON, GLUT_RIGHT_BUTTON
GLUT_MIDDLE_BUTTON)  // Sag Sol Orta Mouse tuslari

Mouse fonksiyonunun cagirilmasi icin oncelikle;

Ana fonksiyonumuza(main)

glutMouseFunc(myMouse);   //glut mouse func  ekliyoruz. (myMouse) olusturacagimiz fonksiyon olacak

ve fonksiyonumuzu olusturuyoruz.

[c language=”++”]

void myMouse(int button, int state, int x, int y) {

// eger sol tusa basilirsa caydanligi dondur.

if(state == GLUT_DOWN && button == GLUT_LEFT_BUTTON)

++doncaydanlikdon;
glutPostRedisplay();

}

[/c]

glutMotionFunc(func);

glutMotionFunc(MotionCallback);   //glut mouse func u icin motioncallback fonksiyonunu ekliyoruz
bu fonksiyon mouse tusuna basili tutup hareket ettirdiginizde animasyon olusturmasi icin kullanilmakta
sonraki derslerimizde bu fonksiyonu kamera hareketleri icin entegre edicez.

[c language=”++”]
void MotionCallback(int x, int y) {
++doncaydanlikdonY;
glutPostRedisplay();
}
[/c]

glutSpecialFunc(func);

glutMotionFunc(spkeyboard);  // yon tuslari ve control tuslarini kullanabilmemize yarayan fonksiyonumuzu cagiriyoruz.

[c language=”++”]

void spkeyboard(int key, int x, int y){
switch (key) {

// SAG yon tusuna basilirsa caydanligi + yonde dondur
case GLUT_KEY_RIGHT: //28 : RIGHT , 29 : LEFT ASCII code
++doncaydanlikdonY;
glutPostRedisplay();
break;

// SOL yon tusuna basilirsa caydanligi – yonde dondur
case GLUT_KEY_LEFT:
–doncaydanlikdonY;
glutPostRedisplay();
break;

// Yukari yon tusuna basilirsa caydanligi yukari yonde dondur
case GLUT_KEY_UP: //30 : UP , 31 : DOWN ASCII code
–doncaydanlikdonX;
glutPostRedisplay();
break;

// Asagi yon tusuna basilirsa caydanligi asagi yonde dondur
case GLUT_KEY_DOWN:
++doncaydanlikdonX;
glutPostRedisplay();
break;
default:
break;
}
}

[/c]

Ders sonunda olusturdugumuz projenin .cpp kaynak dosyasini buradan indirebilirsiniz.

OpenGL -05

Leave a Reply

Your email address will not be published. Required fields are marked *