UNIX 版, Windows 版等があり、GLAUX(AUX) ライブラリ同様に GLUT ライブラリを用いて作成したプログラムは、ほぼそのまま他のプラットフォームに移植することができます。
AUX ライブラリを使用したプログラムは、GLUT ライブラリに変更することをおすすめします。 AUX ライブラリから GLUT ライブラリに変更することは、非常に簡単です。 一部の例外を除いて AUX ライブラリにある関数、定数の名前が変わるだけです。
詳しくはAUX2GLUTをご覧ください。
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 void APIENTRY glutMainLoop(void);
メインのイベントループです。 イベントが発生するのを待ちます。イベント発生時にはコールバック関数が呼び出されます。
glutMainLoop();
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 glutEstablishOverlay(void);
GLUTAPI void GLUTAPIENTRY glutRemoveOverlay(void);
GLUTAPI void GLUTAPIENTRY glutUseLayer(GLenum layer);
GLUTAPI void GLUTAPIENTRY glutPostOverlayRedisplay(void);
GLUTAPI void GLUTAPIENTRY glutPostWindowOverlayRedisplay(int win);
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 11
GLUTAPI void GLUTAPIENTRY glutShowOverlay(void);
GLUTAPI void GLUTAPIENTRY glutHideOverlay(void);
GLUTAPI int GLUTAPIENTRY glutCreateMenu(void (GLUTCALLBACK *func)(int));
ポップアップメニューおよびサブメニューを作成します。
メニューのエントリーを選択した時に呼び出されるコールバック関数を設定します。void GLUTCALLBACK func(int value) { switch (value) { case 0: : break; default: break; } } int main(int argc, char *argv[]) { int menu; : menu = glutCreateMenu(func);
GLUTAPI int GLUTAPIENTRY __glutCreateMenuWithExit(void (GLUTCALLBACK *func)(int), void (__cdecl *exitfunc)(int));
GLUTAPI void GLUTAPIENTRY glutDestroyMenu(int menu);
メニューを削除します。
GLUTAPI int GLUTAPIENTRY glutGetMenu(void);
カレントのメニューを返します。カレントのメニューがない場合は 0 を返します。
GLUTAPI void GLUTAPIENTRY glutSetMenu(int menu);
メニューを設定します。
GLUTAPI void GLUTAPIENTRY glutAddMenuEntry(const char *label, int value);
メニューにエントリーを追加します。int menu; menu = glutCreateMenu(func); glutAddMenuEntry("entry1", 1); glutAddMenuEntry("entry2", 2);
GLUTAPI void GLUTAPIENTRY glutAddSubMenu(const char *label, int submenu);
サブメニューを追加します。int menu, submenu; menu = glutCreateMenu(func); glutAddMenuEntry("entry1", 1); glutAddMenuEntry("entry2", 2); submenu = glutCreateMenu(func); glutAddSubMenu("sub", submenu);
GLUTAPI void GLUTAPIENTRY glutChangeToMenuEntry(int item, const char *label, int value);
メニューのアイテム(エントリーまたはサブメニュー)を item (1 から始まる値)で指定し、エントリーに変更します。
GLUTAPI void GLUTAPIENTRY glutChangeToSubMenu(int item, const char *label, int submenu);
メニューのアイテム(エントリーまたはサブメニュー)を item (1 から始まる値)で指定し、サブメニューに変更します。
GLUTAPI void GLUTAPIENTRY glutRemoveMenuItem(int item);
メニューのアイテム(エントリーまたはサブメニュー)を item (1 から始まる値)で指定し、削除します。
GLUTAPI void GLUTAPIENTRY glutAttachMenu(int button);
メニューを呼び出すボタン(GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON)を登録します。
ゲームモードのウィンドウには無効です。
int menu, submenu; menu = glutCreateMenu(func); glutAddMenuEntry("entry1", 1); glutAddMenuEntry("entry2", 2); submenu = glutCreateMenu(func); glutAddSubMenu("sub", submenu); glutAttachMenu(GLUT_RIGHT_BUTTON);
GLUTAPI void GLUTAPIENTRY glutDetachMenu(int button);
メニューを呼び出すボタン(GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON)の登録を抹消します。
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
カラーインデックスモードで使用するカラーマップ(パレット)の色設定、取得、コピーを行います。
GLUTAPI void GLUTAPIENTRY glutSetColor(int ndx, GLfloat red, GLfloat green, GLfloat blue);
カラーマップ(パレット)のセル(ndx)の色を (r, g, b) に設定します。
(セルは 0 から始まります。)
カラーインデックスモードの時に使用します。
GLUTAPI GLfloat GLUTAPIENTRY glutGetColor(int ndx, int component);
カラーマップ(パレット)のセル(ndx)の色(コンポーネント単位)で取得します。(0.0 〜 1.0)
(セルは 0 から始まります。)
component 成分 GLUT_RED 赤成分 GLUT_GREEN 緑成分 GLUT_BLUE 青成分
GLUTAPI void GLUTAPIENTRY glutCopyColormap(int win);
指定ウィンドウのカラーマップ(パレット)をカレントウィンドウのカラーマップにコピーします。
GLUTAPI int GLUTAPIENTRY glutGet(GLenum type);
GLUT_WINDOW_X
- ウィンドウの表示位置(X)
GLUT_WINDOW_Y
- ウィンドウの表示位置(Y)
GLUT_WINDOW_WIDTH
- ウィンドウの幅
GLUT_WINDOW_HEIGHT
- ウィンドウの高さ
GLUT_WINDOW_BUFFER_SIZE
- カラーバッファサイズ
GLUT_WINDOW_STENCIL_SIZE
- ステンシルバッファサイズ
GLUT_WINDOW_DEPTH_SIZE
- デプスバッファサイズ
GLUT_WINDOW_RED_SIZE
- カラーバッファ(RED)サイズ
GLUT_WINDOW_GREEN_SIZE
- カラーバッファ(GREEN)サイズ
GLUT_WINDOW_BLUE_SIZE
- カラーバッファ(BLUE)サイズ
GLUT_WINDOW_ALPHA_SIZE
- カラーバッファ(ALPHA)サイズ
GLUT_WINDOW_ACCUM_RED_SIZE
- アキュムレーションバッファ(RED)サイズ
GLUT_WINDOW_ACCUM_GREEN_SIZE
- アキュムレーションバッファ(GREEN)サイズ
GLUT_WINDOW_ACCUM_BLUE_SIZE
- アキュムレーションバッファ(BLUE)サイズ
GLUT_WINDOW_ACCUM_ALPHA_SIZE
- アキュムレーションバッファ(ALPHA)サイズ
GLUT_WINDOW_DOUBLEBUFFER
- 1 ... ダブルバッファ
0 ... シングルバッファGLUT_WINDOW_RGBA
- 1 ... RGBA モード
0 ... カラーインデックスモードGLUT_WINDOW_PARENT
- 親ウィンドウ (0 ... 親ウィンドウがない。これは、カレントウィンドウがトップレベルウィンドウであることを意味します。)
GLUT_WINDOW_NUM_CHILDREN
- サブウィンドウの数(子ウィンドウのみで、孫以下は含まない)
GLUT_WINDOW_COLORMAP_SIZE
- カラーマップのサイズ(RGBA モードの場合は 0)
GLUT_WINDOW_NUM_SAMPLES
- マルチサンプリングのサンプル数
GLUT_WINDOW_STEREO
- 1 ... ステレオバッファ
0 ... それ以外GLUT_WINDOW_CURSOR
- カレントウィンドウのカレントカーソル
GLUT_SCREEN_WIDTH
- スクリーンの幅をピクセル数で返す(0 はサイズ不明)
GLUT_SCREEN_HEIGHT
- スクリーンの高さをピクセル数で返す(0 はサイズ不明)
GLUT_SCREEN_WIDTH_MM
- スクリーンの幅をミリメートルで返す(0 はサイズ不明)
GLUT_SCREEN_HEIGHT_MM
- スクリーンの高さをミリメートルで返す(0 はサイズ不明)
GLUT_MENU_NUM_ITEMS
- カレントメニューのアイテムの数
GLUT_DISPLAY_MODE_POSSIBLE
- カレントのディスプレイモードをサポートしているか否か
GLUT_INIT_DISPLAY_MODE
- 初期のディスプレイモード
GLUT_INIT_WINDOW_X
- 初期のウィンドウの表示位置(X)
GLUT_INIT_WINDOW_Y
- 初期のウィンドウの表示位置(Y)
GLUT_INIT_WINDOW_WIDTH
- 初期のウィンドウの幅
GLUT_INIT_WINDOW_HEIGHT
- 初期のウィンドウの高さ
GLUT_ELAPSED_TIME
GLUT_WINDOW_FORMAT_ID
- フォーマットID
X11 ... visual ID
Windows ... Pxel Format ID
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13
GLUTAPI int GLUTAPIENTRY glutDeviceGet(GLenum type);
GLUT_HAS_KEYBOARD
- キーボードの有無。(非0 ... 有, 0 ... 無)
GLUT_HAS_MOUSE
- マウスの有無。(非0 ... 有, 0 ... 無)
GLUT_HAS_SPACEBALL
- スペースボールの有無。(非0 ... 有, 0 ... 無)
GLUT_HAS_DIAL_AND_BUTTON_BOX
- ダイアル&ボタンボックスの有無。(非0 ... 有, 0 ... 無)
GLUT_HAS_TABLET
- タブレットの有無。(非0 ... 有, 0 ... 無)
GLUT_NUM_MOUSE_BUTTONS
- マウスのボタンの数
GLUT_NUM_SPACEBALL_BUTTONS
- スペースボールのボタンの数
GLUT_NUM_BUTTON_BOX_BUTTONS
- ボタンボックスのボタンの数
GLUT_NUM_DIALS
- ダイアルの数
GLUT_NUM_TABLET_BUTTONS
- タブレットのボタンの数
GLUT_DEVICE_IGNORE_KEY_REPEAT
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13GLUT_DEVICE_KEY_REPEAT
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13GLUT_JOYSTICK_POLL_RATE
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13GLUT_HAS_JOYSTICK
- ジョイスティックの有無。(非0 ... 有, 0 ... 無)
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13GLUT_JOYSTICK_BUTTONS
- ジョイスティックのボタンの数
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13GLUT_JOYSTICK_AXES
- ジョイスティックの軸数
GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13
GLUTAPI int GLUTAPIENTRY glutExtensionSupported(const char *name);
OpenGL 拡張機能をサポートしているか否かを返します。if (!glutExtensionSupported("GL_EXT_texture3D")) { fprintf(stderr, "Not Support.\n"); exit(1); }
GLUTAPI int GLUTAPIENTRY glutGetModifiers(void);
keyboard, special, mouse コールバック関数で、SHIFT, CTRL, ALT キーが押されているかどうかを調べることができます。
フラグ
GLUT_ACTIVE_SHIFT SHIFTキーが押されている GLUT_ACTIVE_CTRL CTRLキーが押されている GLUT_ACTIVE_ALT ALTキーが押されている if (glutGetModifiers() & GLUT_ACTIVE_SHIFT) { /* SHIFT キーが押されている */ : }
GLUTAPI int GLUTAPIENTRY glutLayerGet(GLenum type);
GLUTAPI void * GLUTAPIENTRY glutGetProcAddress(const char *procName);
GLUT_API_VERSION >= 5
■ フォント/文字列の描画
ビットマップフォントおよびストロークフォント(ベクターフォント)の描画、文字幅、文字列の幅を取得することができます。
GLUT ライブラリは ISO-8859-1 256 種のビットマップフォントと、 US-ASCII(0x20〜0x7fの範囲)のストロークフォントをサポートしています。
GLUTAPI void GLUTAPIENTRY glutBitmapCharacter(void *font, int character);
カレントラスター位置に、フォント名 font で、文字 character (1文字)を描画します。
GLUT_BITMAP_8_BY_13
- 8x13 固定幅フォント
-misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1GLUT_BITMAP_9_BY_15
- 9x15 固定幅フォント
-misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1
GLUT_BITMAP_TIMES_ROMAN_10
- 10 point プロポーショナル Times Roman フォント
-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1GLUT_BITMAP_TIMES_ROMAN_24
- 24 point プロポーショナル Times Roman フォント
-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1
GLUT_BITMAP_HELVETICA_10
- 10 point プロポーショナル Helvetica フォント
-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1GLUT_BITMAP_HELVETICA_12
- 12 point プロポーショナル Helvetica フォント
-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1GLUT_BITMAP_HELVETICA_18
- 18 point プロポーショナル Helvetica フォント
-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1
GLUTAPI int GLUTAPIENTRY glutBitmapWidth(void *font, int character);
ビットマップフォント名 font の文字 character (1文字)の幅を返します。
GLUTAPI void GLUTAPIENTRY glutStrokeCharacter(void *font, int character);
US-ASCII(0x20〜0x7fの範囲)のストロークフォントをサポートしています。
GLUT_STROKE_ROMAN
- プロポーショナル Roman Simplex フォント
GLUT_STROKE_MONO_ROMAN
- 固定幅 Roman Simplex フォント
(文字幅以外は GLUT_STROKE_ROMAN と同一)
GLUTAPI int GLUTAPIENTRY glutStrokeWidth(void *font, int character);
ストロークフォント名 font の文字 character (1文字)の幅を返します。
GLUTAPI int GLUTAPIENTRY glutBitmapLength(void *font, const unsigned char *string);
ビットマップフォント名 font の文字列 string の幅を返します。
GLUTAPI int GLUTAPIENTRY glutStrokeLength(void *font, const unsigned char *string);
ストロークフォント名 font の文字列 string の幅を返します。
■ 3Dオブジェクト描画
ティーポット以外のオブジェクトにはテクスチャ座標は定義されません。 このため、テクスチャマッピングを行う場合は、glTexGen によるテクスチャ座標の自動生成を用いる必要があります。
glTexGen によるテクスチャ座標の自動生成では、面単位でテクスチャ座標軸を変更することができないため、 オブジェクト単位で同じ座標系でのマッピングとなります。
GLUTAPI void GLUTAPIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
ワイヤーフレームの球を描画します。球の半径を radius で指定します。
球の中心は原点(0, 0, 0)で、極はZ軸です。経線を slices 個、緯線を stacks 個に分割されます。
内部で gluSphere を呼び出しています。
GLUTAPI void GLUTAPIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
ソリッドモデルの球を描画します。球の半径を radius で指定します。
球の中心は原点(0, 0, 0)で、極はZ軸です。経線を slices 個、緯線を stacks 個に分割されます。
内部で gluSphere を呼び出しています。
GLUTAPI void GLUTAPIENTRY glutWireCube(GLdouble size);
ワイヤーフレームの立方体を描画します。立方体の1辺の長さを size で指定します。
立方体の中心は原点(0, 0, 0)です。
GLUTAPI void GLUTAPIENTRY glutSolidCube(GLdouble size);
ソリッドモデルの立方体を描画します。立方体の1辺の長さを size で指定します。
立方体の中心は原点(0, 0, 0)です。
GLUTAPI void GLUTAPIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
ワイヤーフレームのトーラスを描画します。inner 5分割、outer 10分割。
中心は原点(0, 0, 0)であり、Z軸回りのトーラスを描画します。
GLUTAPI void GLUTAPIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);
ソリッドモデルのトーラスを描画します。inner 8分割、outer 15分割。
中心は原点(0, 0, 0)であり、Z軸回りのトーラスを描画します。
GLUTAPI void GLUTAPIENTRY glutWireIcosahedron(void);
ワイヤーフレームの20面体を描画します。
GLUTAPI void GLUTAPIENTRY glutSolidIcosahedron(void);
ソリッドモデルの20面体を描画します。
GLUTAPI void GLUTAPIENTRY glutWireOctahedron(void);
ワイヤーフレームの8面体を描画します。
GLUTAPI void GLUTAPIENTRY glutSolidOctahedron(void);
ソリッドモデルの8面体を描画します。
GLUTAPI void GLUTAPIENTRY glutWireTetrahedron(void);
ワイヤーフレームの4面体を描画します。
GLUTAPI void GLUTAPIENTRY glutSolidTetrahedron(void);
ソリッドモデルの4面体を描画します。
GLUTAPI void GLUTAPIENTRY glutWireDodecahedron(void);
ワイヤーフレームの12面体を描画します。
GLUTAPI void GLUTAPIENTRY glutSolidDodecahedron(void);
ソリッドモデルの12面体を描画します。
GLUTAPI void GLUTAPIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
ワイヤーフレームの円錐を描画します。
Z軸周り15分割、Z軸に沿って10分割。
円錐の底面の中心が原点(0, 0, 0)、半径 base で、(0, 0, height)が円錐の先端となります。 底面は蓋はなく、閉じていません。
内部で gluCone を呼び出しています。
GLUTAPI void GLUTAPIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);
ソリッドモデルの円錐を描画します。
Z軸周り15分割、Z軸に沿って10分割。
円錐の底面の中心が原点(0, 0, 0)、半径 base で、(0, 0, height)が円錐の先端となります。 底面は蓋はなく、閉じていません。
内部で gluCone を呼び出しています。
GLUTAPI void GLUTAPIENTRY glutWireTeapot(GLdouble size);
ワイヤーフレームのユタ・ティーポットを描画します。
グリッド10。(メッシュの分割数が10)
テクスチャ座標の生成にも対応。
内部で GL_AUTO_NORMAL が有効になるため、GLAUX(AUX) と異なり法線の自動生成を行う必要はありません。 また、内部で GL_NORMALIZE が有効になるため、GLAUX(AUX) と異なり法線の正規化も必要ありません。
左手系でモデリングされているため、Z方向を-1.0倍して面の向きを変更するか、 glFrontFace(GL_CW) で表面の向きを変更する必要があります。
(テクスチャマッピングを行う場合は、そのままではそれぞれ画像が上下反転、上下左右反転します。 詳しくは glutSolidTeapot の説明をご覧ください。)例) ティーポットを描画(Z 方向を-1.0倍する場合)glPushMatrix(); glScalef(1.0, 1.0, -1.0); glutWireTeapot(0.6); glPopMatrix();例) 面の向きを変える場合glFrontFace(GL_CW); glutWireTeapot(0.6); glFrontFace(GL_CCW);
GLUTAPI void GLUTAPIENTRY glutSolidTeapot(GLdouble size);
ソリッドモデルのユタ・ティーポットを描画します。
グリッド7。(メッシュの分割数が7。ワイヤーフレームモデルよりも荒いことに注意。)
テクスチャ座標の生成にも対応。
内部で GL_AUTO_NORMAL が有効になるため、GLAUX(AUX) と異なり法線の自動生成を行う必要はありません。 また、内部で GL_NORMALIZE が有効になるため、GLAUX(AUX) と異なり法線の正規化も必要ありません。
左手系でモデリングされているため、Z方向を-1.0倍して面の向きを変更するか、 glFrontFace(GL_CW) で表面の向きを変更する必要があります。例) ティーポットを描画(Z 方向を-1.0倍する場合)ただし、そのままテクスチャマッピングを行うと、画像の上下が逆となります。glPushMatrix(); glScalef(1.0, 1.0, -1.0); glutSolidTeapot(0.6); glPopMatrix();
例) テクスチャマッピングを行う(Z 方向を-1.0倍する場合)テクスチャマトリックスを用いて、T を -1.0 倍することで上下反転します。glMatrixMode(GL_TEXTURE); glLoadIdentity(); glScalef(1.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glScalef(1.0, 1.0, -1.0); glutSolidTeapot(0.6); glPopMatrix();
例) 面の向きを変える場合テクスチャの上下、左右が逆となるので注意。glFrontFace(GL_CW); glutSolidTeapot(0.6); glFrontFace(GL_CCW);
例) テクスチャマッピングを行う(面の向きを変える場合)テクスチャマトリックスを用いて、S, T を -1.0 倍することで上下反転、左右反転します。glMatrixMode(GL_TEXTURE); glLoadIdentity(); glScalef(-1.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glFrontFace(GL_CW); glutSolidTeapot(0.6); glFrontFace(GL_CCW);
■ ビデオリサイズ
GLUTAPI int GLUTAPIENTRY glutVideoResizeGet(GLenum param);
GLUTAPI void GLUTAPIENTRY glutSetupVideoResizing(void);
GLUTAPI void GLUTAPIENTRY glutStopVideoResizing(void);
GLUTAPI void GLUTAPIENTRY glutVideoResize(int x, int y, int width, int height);
GLUTAPI void GLUTAPIENTRY glutVideoPan(int x, int y, int width, int height);
■ デバッグ
GLUTAPI void GLUTAPIENTRY glutReportErrors(void);
■ デバイス制御
GLUTAPI void GLUTAPIENTRY glutIgnoreKeyRepeat(int ignore);
GLUTAPI void GLUTAPIENTRY glutSetKeyRepeat(int repeatMode);
Windows ではサポートしていません。
GLUTAPI void GLUTAPIENTRY glutForceJoystickFunc(void);
glutJoystickFunc で定義したジョイスティック・コールバック関数を強制的に呼び出します。
ジョイスティックが接続されていない場合は、何もしません。
X11 ではジョイスティックをサポートしていないため、何もしません。
■ ゲームモード
GLUT は、ゲームアプリケーション向けにフルスクリーン表示のゲームモードをサポートしています。
GLUTAPI void GLUTAPIENTRY glutGameModeString(const char *string);
ゲームモードのディスプレイ設定(画面解像度、色数、リフレッシュレート)の設定を行います。
= 一致するもの != 一致しないもの < 小さいもののうち、最大のもの > 大きいもののうち、最大のもの <= 小さいか、等しいもののうち、最大のもの >= 大きいか、等しいもののうち、最大のもの ~ 大きいか、等しいもののうち、最小のもの
bpp
- Bits Per Pixel で色数を指定します。
height
- 高さを指定します。
hertz
- リフレッシュレートを指定します。
num
- コンフィグレーションを番号で直接指定します。
width
- 幅を指定します。
例) ゲームモードのディスプレイ設定を 800x600以上,32bitカラー,60Hz以上 にします。glutGameModeString("width>=800 height>=600 bpp=32 hertz>=60");
あるいは
[width "x" height][":" bitsPerPixel]["@" videoRate]
という記述でも指定が可能です。
例) ゲームモードのディスプレイ設定を 800x600,32bitカラー,75Hz にします。glutGameModeString("800x600:32@75");例) ゲームモードのディスプレイ設定 リフレッシュレートを 60Hz にします。glutGameModeString("@60");
GLUTAPI int GLUTAPIENTRY glutEnterGameMode(void);
ゲームモードに切り替えます。
GLUTAPI void GLUTAPIENTRY glutLeaveGameMode(void);
ゲームモードから復帰します。
ゲームモード時のみ有効です。
GLUTAPI int GLUTAPIENTRY glutGameModeGet(GLenum mode);
GLUT_GAME_MODE_ACTIVE
- ゲームモードの場合は非0、ゲームモードでなければ0を返します。
現在、ゲームモードか否かを確認する時に使用します。GLUT_GAME_MODE_POSSIBLE
- ゲームモードに切り替えた時に、指定したディスプレイ設定に変更可能な場合は非0、 変更不可能な場合は 0 を返します。
ゲームモードに切り替える前に、指定したディスプレイ設定に変更可能かどうかを確認する時に使用します。GLUT_GAME_MODE_WIDTH
- ゲームモードの画面幅を返します。
GLUT_GAME_MODE_HEIGHT
- ゲームモードの画面高さを返します。
GLUT_GAME_MODE_PIXEL_DEPTH
- ゲームモードの画面の色数を Bits Per Pixel で返します。
GLUT_GAME_MODE_REFRESH_RATE
- ゲームモードのリフレッシュレートを返します。不明の場合は 0 を返します。
GLUT_GAME_MODE_DISPLAY_CHANGED
- ゲームモードの場合は非0。 ただし、指定したディスプレイ設定に変更不可の場合は 0 を返します。
ゲームモードに切り替えた後で、指定したディスプレイ設定に変更可能かどうかを確認する時に使用します。