OpenGL(GLUT)の主に使用するコールバック関数の一覧。
定義 | 呼ばれるとき |
---|---|
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)); | マウスカーソルが移動しているとき(※ドラッグではない事に注意。ドラッグ中は glutMotionFunc() で設定したコールバック関数が呼ばれる)。 |
glutEntryFunc(void (*func)(int state)); | マウスカーソルがウィンドウの外に出たときとウィンドウ内に入ったとき。 |
glutVisibilityFunc(void (*func)(int state)); | ウィンドウがアイコン化されるなど不可視になったり、その後元に戻され可視になったとき。 |
glutIdleFunc(void (*func)(void)); | プログラムがアイドル状態になったとき。 |
コールバック関数の設定であるため実際は以下のように使われます。
#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; }