glutDisplayFunc( void (*func)(void) )
--> 描画処理が必要なとき
glutReshapeFunc( void (*func)(int width, int height) )
--> ウィンドウのリサイズ時
glutKeyboardFunc( void (*func)(unsigned char key, int x, int y) )
--> キーボードの入力があったとき. コールバック関数にはマウスの位置
情報も合わせて渡される
glutMouseFunc( void (*func)(int button, int state, int x ,int y) )
--> マウスボタンが押されたか離されたとき
glutMotionFunc( void (*func)(int x, int y) )
--> マウスでドラッグが行われているとき
glutPassiveMotionFunc( void (*func)(int x, int y) )
--> マウスカーソルが移動しているとき (ドラッグではないことに注意)
glutEntryFunc( void (*func)(int state) )
--> マウスカーソルがウィンドウの外に出たときとウィンドウ内に入ったとき
glutVisibilityFunc( void (*func)(int state) )
--> ウィンドウがアイコン化されるなど不可視になったり,
その後元に戻され可視になったとき
glutIdleFunc( void (*func)(void) )
--> プログラムがアイドル状態になったとき
callback.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | /*
Compile:
gcc -Wall -O2 -o callback callback.c -framework OpenGL -framework GLUT
*/
#include <stdio.h>
/* Mac OS X */
#ifdef __APPLE__
#include <GLUT/glut.h>
#endif
/* Linux */
#ifdef linux
#include <gl/glut.h>
#endif
/* Windows */
#ifdef WIN32
#include <windows.h>
#include <gl/glut.h>
#endif
static void displayCallback(void){
}
void motionCallback(int x, int y){
printf("motion : %d %d\n", x, y);
}
void passiveMotionCallback(int x, int y){
printf("passive motion : %d %d\n", x, y);
}
int main(int argc, char* argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(400, 400);
glutCreateWindow("GLUT");
glutMotionFunc(motionCallback);
glutPassiveMotionFunc(passiveMotionCallback);
glutDisplayFunc(displayCallback);
glutMainLoop();
return 0;
}
|
[cactus:~/code_c/opengl/kumamoto]% ./callback