GLUT API リファレンス


UNIX 版, Windows 版等があり、GLAUX(AUX) ライブラリ同様に GLUT ライブラリを用いて作成したプログラムは、ほぼそのまま他のプラットフォームに移植することができます。

AUX ライブラリを使用したプログラムは、GLUT ライブラリに変更することをおすすめします。 AUX ライブラリから GLUT ライブラリに変更することは、非常に簡単です。 一部の例外を除いて AUX ライブラリにある関数、定数の名前が変わるだけです。
詳しくはAUX2GLUTをご覧ください。


■ GLUT 機能一覧


■ GLUT API 一覧(アルファベット順)


■ 初期化

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);

カレントウィンドウのカーソルイメージを変更します。

カーソル定数説 明X11Windows
GLUT_CURSOR_RIGHT_ARROW右矢印XC_arrow IDC_ARROW
GLUT_CURSOR_LEFT_ARROW 左矢印XC_top_left_arrowIDC_ARROW
GLUT_CURSOR_INFO 情報 XC_hand1 IDC_SIZEALL
GLUT_CURSOR_DESTROY 破壊 XC_pirate IDC_NO
GLUT_CURSOR_HELP ヘルプXC_question_arrowIDC_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_cornerIDC_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_crosshairIDC_CROSS


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)が渡されます。(左上隅が原点)
buttonGLUT_LEFT_BUTTONマウスの左ボタン
GLUT_RIGHT_BUTTONマウスの右ボタン
GLUT_MIDDLE_BUTTONマウスの中央ボタン
stateGLUT_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 >= 13
GLUT_DEVICE_KEY_REPEAT


GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13
GLUT_JOYSTICK_POLL_RATE


GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13
GLUT_HAS_JOYSTICK
ジョイスティックの有無。(非0 ... 有, 0 ... 無)

GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13
GLUT_JOYSTICK_BUTTONS
ジョイスティックのボタンの数

GLUT_API_VERSION >= 4 または GLUT_XLIB_IMPLEMENTATION >= 13
GLUT_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文字)を描画します。

BITMAP
GLUT_BITMAP_8_BY_13
8x13 固定幅フォント
-misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1
GLUT_BITMAP_9_BY_15
9x15 固定幅フォント
-misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1

BITMAP Times Roman
GLUT_BITMAP_TIMES_ROMAN_10
10 point プロポーショナル Times Roman フォント
-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1
GLUT_BITMAP_TIMES_ROMAN_24
24 point プロポーショナル Times Roman フォント
-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1

BITMAP Helvetica
GLUT_BITMAP_HELVETICA_10
10 point プロポーショナル Helvetica フォント
-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1
GLUT_BITMAP_HELVETICA_12
12 point プロポーショナル Helvetica フォント
-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1
GLUT_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の範囲)のストロークフォントをサポートしています。

Roman Simplex
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 によるテクスチャ座標の自動生成では、面単位でテクスチャ座標軸を変更することができないため、 オブジェクト単位で同じ座標系でのマッピングとなります。


wiresphere

GLUTAPI void GLUTAPIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);

ワイヤーフレームの球を描画します。球の半径を radius で指定します。
球の中心は原点(0, 0, 0)で、極はZ軸です。経線を slices 個、緯線を stacks 個に分割されます。
内部で gluSphere を呼び出しています。

solidsphere

GLUTAPI void GLUTAPIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);

ソリッドモデルの球を描画します。球の半径を radius で指定します。
球の中心は原点(0, 0, 0)で、極はZ軸です。経線を slices 個、緯線を stacks 個に分割されます。
内部で gluSphere を呼び出しています。

wirecube

GLUTAPI void GLUTAPIENTRY glutWireCube(GLdouble size);

ワイヤーフレームの立方体を描画します。立方体の1辺の長さを size で指定します。
立方体の中心は原点(0, 0, 0)です。

solidcube

GLUTAPI void GLUTAPIENTRY glutSolidCube(GLdouble size);

ソリッドモデルの立方体を描画します。立方体の1辺の長さを size で指定します。
立方体の中心は原点(0, 0, 0)です。

wiretorus

GLUTAPI void GLUTAPIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);

ワイヤーフレームのトーラスを描画します。inner 5分割、outer 10分割。
中心は原点(0, 0, 0)であり、Z軸回りのトーラスを描画します。

solidtorus

GLUTAPI void GLUTAPIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);

ソリッドモデルのトーラスを描画します。inner 8分割、outer 15分割。
中心は原点(0, 0, 0)であり、Z軸回りのトーラスを描画します。

wireicosahedron /

GLUTAPI void GLUTAPIENTRY glutWireIcosahedron(void);

ワイヤーフレームの20面体を描画します。

solidicosahedron /

GLUTAPI void GLUTAPIENTRY glutSolidIcosahedron(void);

ソリッドモデルの20面体を描画します。

wireoctahedron

GLUTAPI void GLUTAPIENTRY glutWireOctahedron(void);

ワイヤーフレームの8面体を描画します。

solidoctahedron

GLUTAPI void GLUTAPIENTRY glutSolidOctahedron(void);

ソリッドモデルの8面体を描画します。

wiretetrahedron

GLUTAPI void GLUTAPIENTRY glutWireTetrahedron(void);

ワイヤーフレームの4面体を描画します。

solidtrahedron

GLUTAPI void GLUTAPIENTRY glutSolidTetrahedron(void);

ソリッドモデルの4面体を描画します。

wiredodecahedron

GLUTAPI void GLUTAPIENTRY glutWireDodecahedron(void);

ワイヤーフレームの12面体を描画します。

soliddecahedron

GLUTAPI void GLUTAPIENTRY glutSolidDodecahedron(void);

ソリッドモデルの12面体を描画します。

wirecone

GLUTAPI void GLUTAPIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);

ワイヤーフレームの円錐を描画します。
Z軸周り15分割、Z軸に沿って10分割。
円錐の底面の中心が原点(0, 0, 0)、半径 base で、(0, 0, height)が円錐の先端となります。 底面は蓋はなく、閉じていません。
内部で gluCone を呼び出しています。

solidcone

GLUTAPI void GLUTAPIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);

ソリッドモデルの円錐を描画します。
Z軸周り15分割、Z軸に沿って10分割。
円錐の底面の中心が原点(0, 0, 0)、半径 base で、(0, 0, height)が円錐の先端となります。 底面は蓋はなく、閉じていません。
内部で gluCone を呼び出しています。

wireteapot

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);
  

solidteapot

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();
  
scale ただし、そのままテクスチャマッピングを行うと、画像の上下が逆となります。
例) テクスチャマッピングを行う(Z 方向を-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();
  
texture_scale テクスチャマトリックスを用いて、T を -1.0 倍することで上下反転します。

例) 面の向きを変える場合

  	glFrontFace(GL_CW);
  	glutSolidTeapot(0.6);
  	glFrontFace(GL_CCW);
  
cw テクスチャの上下、左右が逆となるので注意。
例) テクスチャマッピングを行う(面の向きを変える場合)

  	glMatrixMode(GL_TEXTURE);
  	glLoadIdentity();
  	glScalef(-1.0, -1.0, 1.0);
  	glMatrixMode(GL_MODELVIEW);

  	glFrontFace(GL_CW);
  	glutSolidTeapot(0.6);
  	glFrontFace(GL_CCW);
  
texture_cw テクスチャマトリックスを用いて、S, T を -1.0 倍することで上下反転、左右反転します。

■ ビデオリサイズ

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 を返します。
ゲームモードに切り替えた後で、指定したディスプレイ設定に変更可能かどうかを確認する時に使用します。


[3D TOPメニュー]
[OpenGL] [irisGL] [VRML] [作品集] [イエローページ]
[書籍紹介] [DVD]
[この Web ページについて] [アンケート] [予定]
[OpenGLストア]

[Namazu TOPメニュー]