GLUTAPI void APIENTRY glutInitWindowPosition(int x, int y);
ウィンドウの表示位置(x, y) を指定します。
例) 表示位置(0, 0)
glutInitWindowPosition(0, 0);
GLUTAPI void APIENTRY glutInitWindowSize(int width, int height);
ウィンドウサイズ(width, height) を指定します。
デフォルトのウィンドウサイズは 300x300 です。
例) ウィドウサイズを(256, 256)
glutInitWindowSize(256, 256);
GLUTAPI void APIENTRY glutInit(int *argcp, char **argv);
初期設定を行います。
例) 表示位置(0, 0), ウィドウサイズを(256, 256)として GLUT の初期設定を行います。
int main(int argc, char *argv[])
{
glutInitWindowPosition(0, 0);
glutInitWindowSize(256, 256);
glutInit(&argc, argv);
:
プログラムのコマンドライン引数に以下のオプションを指定することができます。
-display DISPLAY
-
表示するディスプレイ(X サーバ)を指定します。
省略時は環境変数 DISPLAY を使用します。
Windows ではサポートしていません。
-geometry WxH+X+Y
-
ウィンドウのサイズと表示位置を指定します。
+X ではスクリーン左端からの位置、-X では右端からの位置を指定します。
+Y ではスクリーン上端からの位置、-Y では下端からの位置を指定します。
-iconic
-
アイコン化してプログラムを起動します。
-indirect
-
間接レンダリング OpenGL レンダリングコンテキストを指定します。
Windows ではサポートしていません。
-direct
-
直接レンダリング OpenGL レンダリングコンテキストを指定します。
Windows ではサポートしていません。
-gldebug
-
デバッグモード。コールバック時に OpenGL ランタイムエラーを表示します。
デバッグ用。デバッグ目的でのみ使用します。
-sync
-
XSynchronize による同期動作モード。
デバッグ用。デバッグ目的でのみ使用します。
Windows ではサポートしていません。
例) 表示位置(右端、上端), ウィドウサイズを(256, 256) で glutprog1 をコマンドラインから実行します。
$ glutprog1 -geometory 256x256-0+0
GLUTAPI void APIENTRY glutInitDisplayMode(unsigned int mode);
ディスプレイモードを論理和で mode に設定します。
カラーモード: GLUT_RGB, GLUT_RGBA または GLUT_INDEX
バッファ: GLUT_SINGLE または GLUT_DOUBLE
アキュムレーションバッファ: GLUT_ACCUM
アルファバッファ: GLUT_ALPHA
デプスバッファ: GLUT_DEPTH
ステンシルバッファ: GLUT_STENCIL
GLUT_API_VERSION >= 2 の場合
マルチサンプルバッファ: GLUT_MULTISAMPLE
ステレオバッファ: GLUT_STEREO
GLUT_API_VERSION >= 3 の場合
ルミナンスバッファ: GLUT_LUMINANCE
例) RGB モード、ダブルバッファ、デプスバッファ
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 9 の場合
GLUTAPI void APIENTRY glutInitDisplayString(const char *string);
ディスプレイモードを string で設定します。
glutInitDisplayMode よりきめ細かい指定が可能です。
| = | 一致するもの |
| != | 一致しないもの |
| < | 小さいもののうち、最大のもの |
| > | 大きいもののうち、最大のもの |
| <= | 小さいか、等しいもののうち、最大のもの |
| >= | 大きいか、等しいもののうち、最大のもの |
| ~ | 大きいか、等しいもののうち、最小のもの |
| name | value | 省略時 | 説明 |
| index | ○ | ">=1" | インデックスカラーモード |
| rgb | ○ | ">=1" | RGBA カラーモード(Aバッファを含まない "alpha=~0" 相当) |
| rgba | ○ | ">=1" | RGBA カラーモード(Aバッファを含む) |
| red | ○ | ">=1" | R カラーバッファサイズ |
| green | ○ | ">=1" | G カラーバッファサイズ |
| blue | ○ | ">=1" | B カラーバッファサイズ |
| alpha | ○ | ">=1" | A カラーバッファサイズ |
| buffer | ○ | ">=1" | カラーバッファサイズ |
| single | × | | シングルバッファ |
| double | ○ | "=1" | ダブルバッファ |
| depth | ○ | ">=12" | デプスバッファサイズ |
| stencil | ○ | "~1" | ステンシルバッファサイズ |
| stereo | ○ | "=1" | ステレオバッファ |
| auxbufs | ○ | "~1" | 補助バッファサイズ |
| samples | ○ | "<=4" | マルチサンプリングバッファのサンプル数 |
| luminance | ○ | ">=1" | ルミナンスバッファサイズ(Rバッファ) |
| num | 必須 | | |
| X11 限定 |
| conformant | × | "=1" | |
| slow | × | ">=0" | |
| xvisual | 必須 | | visual 番号で直接指定 |
| xstaticgray | ○ | "=1" | StaticGray を指定 |
| xgrayscale | ○ | "=1" | GrayScale を指定 |
| xstaticcolor | ○ | "=1" | StaticColor を指定 |
| xpseudocolor | ○ | "=1" | PseudoColor を指定 |
| xtruecolor | ○ | "=1" | TrueColor を指定 |
| xdirectcolor | ○ | "=1" | DirectColor を指定 |
| Windows 限定 |
| win32pfd | 必須 | | ピクセルフォーマット番号で直接指定 |
GLUT_API_VERSION=4
GLUTAPI int GLUTAPIENTRY glutCreateWindow(const char *title);
glutInitDisplayMode および glutInitWindowPosition, glutInitWindowSize で設定した内容でトップレベルウィンドウを開きます。
ウィンドウのタイトルを title に設定します。
戻り値はウィンドウ番号(1以上の値)が返ります。この値でウィンドウを識別します。
また、作成したウィンドウをカレントウィンドウにします。
ゲームモード時は呼び出し禁止です。
GLUTAPI int GLUTAPIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int));
GLUTAPI int GLUTAPIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);
ウィンドウ win のサブウィンドウを作成します。
戻り値はウィンドウ番号(1以上の値)が返ります。
作成したウィンドウをカレントウィンドウにします。
GLUTAPI void GLUTAPIENTRY glutDestroyWindow(int win);
ウィンドウ win を破壊します。
GLUTAPI void GLUTAPIENTRY glutPostRedisplay(void);
再描画イベントを発生させます。
これにより glutDisplayFunc で設定したディスプレイコールバック関数が呼び出されます。
GLUTAPI void GLUTAPIENTRY glutPostWindowRedisplay(int win);
ウィンドウ win の再描画を要求します。
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 11
GLUTAPI void GLUTAPIENTRY glutSwapBuffers(void);
ダブルバッファ時、バックバッファとフロントバッファを交換(またはコピー)します。
GLUTAPI int GLUTAPIENTRY glutGetWindow(void);
カレントウィンドウを返します。0 は無効です。
GLUTAPI void GLUTAPIENTRY glutSetWindow(int win);
カレントウィンドウを win に変更します。
GLUTAPI void GLUTAPIENTRY glutSetWindowTitle(const char *title);
トップレベルウィンドウのタイトルを再設定します。
ただし、カレントウィンドウがトップレベルウィンドウでなければなりません。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutSetIconTitle(const char *title);
トップレベルウィンドウのアイコンタイトルを再設定します。
ただし、カレントウィンドウがトップレベルウィンドウでなければなりません。
ゲームモードの場合は無効です。
Windows ではウィンドウタイトルとアイコンタイトルの区別がないため、ウィンドウのタイトルを再設定します。
GLUTAPI void GLUTAPIENTRY glutPositionWindow(int x, int y);
カレントウィンドウの表示位置を変更します。
トップレベルウィンドウの場合はスクリーンに対する表示位置を、
サブウィンドウの場合は親ウィンドウに対する表示位置を変更します。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutReshapeWindow(int width, int height);
カレントウィンドウのサイズを変更します。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutPopWindow(void);
カレントウィンドウをスタックに保存します。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutPushWindow(void);
カレントウィンドウをスタックから取り出し復帰します。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutIconifyWindow(void);
アイコン化します。
ただし、カレントウィンドウがトップレベルウィンドウでなければなりません。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutShowWindow(void);
カレントウィンドウを表示します。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutHideWindow(void);
カレントウィンドウを非表示にします。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutFullScreen(void);
トップレベルウィンドウをフルスクリーン表示にします。
ただし、カレントウィンドウがトップレベルウィンドウでなければなりません。
ゲームモードの場合は無効です。
GLUTAPI void GLUTAPIENTRY glutSetCursor(int cursor);
カレントウィンドウのカーソルイメージを変更します。
| カーソル定数 | 説 明 | X11 | Windows |
| GLUT_CURSOR_RIGHT_ARROW | 右矢印 | XC_arrow | IDC_ARROW |
| GLUT_CURSOR_LEFT_ARROW | 左矢印 | XC_top_left_arrow | IDC_ARROW |
| GLUT_CURSOR_INFO | 情報 | XC_hand1 | IDC_SIZEALL |
| GLUT_CURSOR_DESTROY | 破壊 | XC_pirate | IDC_NO |
| GLUT_CURSOR_HELP | ヘルプ | XC_question_arrow | IDC_HELP |
| GLUT_CURSOR_CYCLE | サイクル | XC_exchange | IDC_NO |
| GLUT_CURSOR_SPRAY | スプレー缶 | XC_spraycan | IDC_SIZEALL |
| GLUT_CURSOR_WAIT | 待機 | XC_watch | IDC_WAIT |
| GLUT_CURSOR_TEXT | テキスト | XC_xterm | IDC_IBEAM |
| GLUT_CURSOR_CROSSHAIR | 十字(照準) | XC_crosshair | IDC_CROSS |
| GLUT_CURSOR_UP_DOWN | 上下 | XC_sb_v_double_arrow | IDC_SIZENS |
| GLUT_CURSOR_LEFT_RIGHT | 左右 | XC_sb_h_double_arrow | IDC_SIZEWE |
| GLUT_CURSOR_TOP_SIDE | 上サイド | XC_top_side | IDC_UPARROW |
| GLUT_CURSOR_BOTTOM_SIDE | 下サイド | XC_bottom_side | IDC_SIZENS |
| GLUT_CURSOR_LEFT_SIDE | 左サイド | XC_left_side | IDC_SIZEWE |
| GLUT_CURSOR_RIGHT_SIDE | 右サイド | XC_right_side | IDC_SIZEWE |
| GLUT_CURSOR_TOP_LEFT_CORNER | 左上隅 | XC_top_left_corner | IDC_SIZENWSE |
| GLUT_CURSOR_TOP_RIGHT_CORNER | 右上隅 | XC_top_right_corner | IDC_SIZENESW |
| GLUT_CURSOR_BOTTOM_RIGHT_CORNER | 右下隅 | XC_bottom_right_corner | IDC_SIZENWSE |
| GLUT_CURSOR_BOTTOM_LEFT_CORNER | 左下隅 | XC_bottom_left_corner | IDC_SIZENESW |
| GLUT_CURSOR_INHERIT | 親ウィンドウのカーソル | None | |
| GLUT_CURSOR_NONE | カーソルを非表示 | | NULL |
| GLUT_CURSOR_FULL_CROSSHAIR | フルスクリーン十字カーソル | _SGI_CROSSHAIR_CURSOR または XC_crosshair | IDC_CROSS |
- X11 のマウスカーソルほど、Windows のマウスカーソルの種類は多くないため、同じマウスカーソルが重複しています。
このため、例えば IDC_SIZEWE は GLUT_CURSOR_LEFT_RIGHT なのか GLUT_CURSOR_LEFT_SIDE なのか GLUT_CURSOR_RIGHT_SIDE なのかの区別がつかない等、
気をつけて利用しなければならないことに注意してください。
- GLUT_CURSOR_INHERIT は親ウィンドウのマウスカーソルを設定します。
Windows の場合、
親ウィンドウのマウスカーソルが GLUT_CURSOR_INHERIT の場合は更にその親ウィンドウのマウスカーソルを設定するといったように、
トップレベルウィンドウまで遡ります。
最後にトップレベルウィンドウのマウスカーソルが GLUT_CURSOR_INHERIT の場合は、IDC_ARROW を設定します。
- X11 では、GLUT_CURSOR_FULL_CROSHAIR は _SGI_CROSSHAIR_CURSOR をサポートする環境の場合は、_SGI_CROSSHAIR_CURSOR を設定し、
サポートしない環境では XC_crosshair を設定します。
- デフォルトのマウスカーソルは、GLUT_CURSOR_INHERIT です。
GLUTAPI void GLUTAPIENTRY glutWarpPointer(int x, int y);
カレントウィンドウの(マウス)ポインタを移動します。
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 9
GLUTAPI void GLUTAPIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void));
描画時に呼び出すコールバック関数を指定します。
NULL は指定してはいけません。
コールバック関数
void func(void);
コールバック関数に描画処理を記述します。
例) ディスプレイ関数で、画面クリアを行います。
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glutSwapBuffers();
}
int main(int argc, char **argv)
{
:
glutDisplayFunc(display);
:
glutMainLoop();
}
GLUTAPI void GLUTAPIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height));
ウィンドウサイズの変更、移動等、ウィンドウ操作を行った場合に呼び出すコールバック関数を指定します。
NULL を指定すると、デフォルトの内部コールバック関数に戻します。
デフォルトの内部コールバック関数はノーマルレイヤーとオーバーレイレイヤーのビューポート設定を行います。
コールバック関数
void func(int width, int height);
引数にウィンドウサイズ(width, height)が渡されます。
コールバック関数の実行後、再描画が自動的に実行されます。
例) リシェイプ・コールバック関数で、viewport、カメラの設定を行います。
void reshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char **argv)
{
:
glutReshapeFunc(reshape);
:
glutMainLoop();
}
GLUTAPI void GLUTAPIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
キーボードのキーを押した時に呼び出すコールバック関数を指定します。
(キーを離した時のイベント処理には
glutKeyboardUpFunc を使用します。)
特殊キーのイベント処理には
glutSpecialFunc,
glutSpecialUpFunc を使用します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(unsigned char key, int x, int y);
引数に押されたキーコード、マウスカーソルの位置(x, y)が渡されます。(左上隅が原点)
例) '1' キーを押した時に青色、'2' キーを押した時に赤色で画面クリアを行います。
Esc キーを押した時はウィンドウを閉じて終了します。
int mode = 1;
void display(void)
{
if (mode == 1) {
glClearColor(0.0, 0.0, 1.0, 0.0);
} else {
glClearColor(1.0, 0.0, 0.0, 0.0);
}
glClear(GL_COLOR_BUFFER_BIT);
glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y)
{
switch(key) {
case '1':
mode = 1;
glutPostRedisplay();
break;
case '2':
mode = 2;
glutPostRedisplay();
break;
case 0x1b:
glutDestroyWindow(win);
exit(1);
break;
}
}
int main(int argc, char **argv)
{
:
glutKeyboardFunc(keyboard);
glutDisplayFunc(display);
:
glutMainLoop();
}
GLUTAPI void GLUTAPIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
マウスイベントで呼び出すコールバック関数を指定します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(int button, int state, int x, int y);
引数に押されたマウスボタン、状態(押した/離した)、マウスカーソルの位置(x, y)が渡されます。(左上隅が原点)
| button | GLUT_LEFT_BUTTON | マウスの左ボタン |
| GLUT_RIGHT_BUTTON | マウスの右ボタン |
| GLUT_MIDDLE_BUTTON | マウスの中央ボタン |
| state | GLUT_DOWN | マウスボタンを押した |
| GLUT_UP | マウスボタンを離した |
GLUTAPI void GLUTAPIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
マウスボタンを押しながらマウスを動かした時に呼び出すコールバック関数を指定します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(int x, int y);
引数にマウスカーソルの位置(x, y)が渡されます。(左上隅が原点)
GLUTAPI void GLUTAPIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
マウスボタンを押さずにマウスを動かした時に呼び出すコールバック関数を指定します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(int x, int y);
引数にマウスカーソルの位置(x, y)が渡されます。(左上隅が原点)
GLUTAPI void GLUTAPIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state));
マウスポインタがカレントウィンドウに入った時と出た時
(フォーカスを得た時と失った時)
に呼び出されるエントリーコールバック関数を設定します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(int state);
| GLUT_LEFT | カレントウィンドウの外に出た フォーカスを失った |
| GLUT_ENTERED | カレントウィンドウの中に入った フォーカスを得た |
GLUTAPI void GLUTAPIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state));
カレントウィンドウの表示/非表示の状態が変わった時に呼び出されるビジビリティコールバック関数を設定します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(int state);
| GLUT_VISIBLE | 表示 |
| GLUT_NOT_VISIBLE | 非表示 |
GLUTAPI void GLUTAPIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void));
アイドル状態に入る時に呼び出すコールバック関数を指定します。
NULL を指定すると、コールバックを無効にし、アイドル状態に入る時に何も行いません。
コールバック関数
void func(void);
GLUTAPI void GLUTAPIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value);
millis ミリ秒後に呼び出されるタイマーコールバック関数を指定します。
value はコールバック関数の引数に渡されます。
コールバック関数
void func(int value);
引数に value を渡します。
GLUTAPI void GLUTAPIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state));
glutMenuStatusFunc に置き換わりました。
コールバック関数
void func(int state);
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 9
GLUTAPI void GLUTAPIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
キーボードから特殊キーが押された時に呼び出すコールバック関数を指定します。
(特殊キーを離した時のイベント処理には
glutSpecialUpFunc を使用します。)
通常キーのイベント処理には
glutKeyboardFunc,
glutKeyboardUpFunc を使用します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(int key, int x, int y);
引数に押された特殊キー、マウスカーソルの位置(x, y)が渡されます。(左上隅が原点)
特殊キー
| GLUT_KEY_F1 | F1キー |
| GLUT_KEY_F2 | F2キー |
| GLUT_KEY_F3 | F3キー |
| GLUT_KEY_F4 | F4キー |
| GLUT_KEY_F5 | F5キー |
| GLUT_KEY_F6 | F6キー |
| GLUT_KEY_F7 | F7キー |
| GLUT_KEY_F8 | F8キー |
| GLUT_KEY_F9 | F9キー |
| GLUT_KEY_F10 | F10キー |
| GLUT_KEY_F11 | F11キー |
| GLUT_KEY_F12 | F12キー |
| GLUT_KEY_LEFT | 左キー |
| GLUT_KEY_UP | 上キー |
| GLUT_KEY_RIGHT | 右キー |
| GLUT_KEY_DOWN | 下キー |
| GLUT_KEY_PAGE_UP | PageUpキー |
| GLUT_KEY_PAGE_DOWN | PageDownキー |
| GLUT_KEY_HOME | Homeキー |
| GLUT_KEY_END | Endキー |
| GLUT_KEY_INSERT | Insertキー |
注意) Esc, Backspace, delete キーは通常キー扱いです。
GLUTAPI void GLUTAPIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
コールバック関数
void func(int x, int y, int z);
GLUTAPI void GLUTAPIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
コールバック関数
void func(int x, int y, int z);
GLUTAPI void GLUTAPIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state));
コールバック関数
void func(int button, int state);
GLUTAPI void GLUTAPIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state));
コールバック関数
void func(int button, int state);
GLUTAPI void GLUTAPIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value));
コールバック関数
void func(int dial, int value);
GLUTAPI void GLUTAPIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
コールバック関数
void func(int x, int y);
GLUTAPI void GLUTAPIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
コールバック関数
void func(int button, int state, int x, int y);
GLUTAPI void GLUTAPIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y));
コールバック関数
void func(int status, int x, int y);
引数にマウスカーソル位置(x, y)が渡されます。(左上隅が原点)
状態
| GLUT_MENU_IN_USE | メニューを開いている状態 |
| GLUT_MENU_NOT_IN_USE | メニューを開いていない状態 |
GLUTAPI void GLUTAPIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void));
コールバック関数
void func(void);
GLUTAPI void GLUTAPIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state));
コールバック関数
void func(int state);
GLUTAPI void GLUTAPIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
キーボードからキーが離された時に呼び出すコールバック関数を指定します。
(キーを押した時のイベント処理には
glutKeyboardFunc を使用します。)
特殊キーのイベント処理には
glutSpecialFunc,
glutSpecialUpFunc を使用します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(unsigned char key, int x, int y);
引数に離されたキーのキーコード、マウスカーソルの位置(x, y)が渡されます。(左上隅が原点)
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13
GLUTAPI void GLUTAPIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
キーボードから特殊キーを離した時に呼び出すコールバック関数を指定します。
(特殊キーを押した時のイベント処理には
glutSpecialFunc を使用します。)
通常キーのイベント処理には
glutKeyboardFunc,
glutKeyboardUpFunc を使用します。
NULL を指定すると、コールバックを無効にします。
コールバック関数
void func(int key, int x, int y);
引数に離された特殊キー、マウスカーソルの位置(x, y)が渡されます。(左上隅が原点)
特殊キー
| GLUT_KEY_F1 | F1キー |
| GLUT_KEY_F2 | F2キー |
| GLUT_KEY_F3 | F3キー |
| GLUT_KEY_F4 | F4キー |
| GLUT_KEY_F5 | F5キー |
| GLUT_KEY_F6 | F6キー |
| GLUT_KEY_F7 | F7キー |
| GLUT_KEY_F8 | F8キー |
| GLUT_KEY_F9 | F9キー |
| GLUT_KEY_F10 | F10キー |
| GLUT_KEY_F11 | F11キー |
| GLUT_KEY_F12 | F12キー |
| GLUT_KEY_LEFT | 左キー |
| GLUT_KEY_UP | 上キー |
| GLUT_KEY_RIGHT | 右キー |
| GLUT_KEY_DOWN | 下キー |
| GLUT_KEY_PAGE_UP | PageUpキー |
| GLUT_KEY_PAGE_DOWN | PageDownキー |
| GLUT_KEY_HOME | Homeキー |
| GLUT_KEY_END | Endキー |
| GLUT_KEY_INSERT | Insertキー |
注意) Esc, Backspace, delete キーは通常キー扱いです。
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13
GLUTAPI void GLUTAPIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
ジョイスティックの状態を調べるコールバック関数を指定します。
ポーリングインターバルを pollInterval ミリ秒とします。
コールバック関数
void func(unsigned int buttonMask, int x, int y, int z);
引数にジョイスティックのボタンのマスク、x, y, z の値(-1000〜1000)が渡されます。
ボタン
| GLUT_JOYSTICK_BUTTON_A | ボタンA |
| GLUT_JOYSTICK_BUTTON_B | ボタンB |
| GLUT_JOYSTICK_BUTTON_C | ボタンC |
| GLUT_JOYSTICK_BUTTON_D | ボタンD |
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13