next up previous contents index
Next: 7.2 glutOverlayDisplayFunc Up: 7 Callback Registration Previous:7 Callback Registration

7.1 glutDisplayFunc

  glutDisplayFuncカレントウィンドウに対するディスプレイ・コールバックを指定します.

Usage

void glutDisplayFunc(void (*func)(void));
func
新しいディスプレイ・コールバック関数.

Description

glutDisplayFuncカレントウィンドウへのディスプレイ・コールバック関数を指定する. GLUT がウィンドウのノーマルプレーンへの再描画が必要であると判断したとき, そのウィンドウへのディスプレイ・コールバック関数がコールされる. コールバック実行の前に,再描画されるウィンドウが カレントウィンドウとなり, (オーバーレイのディスプレイ・コールバックが登録されていなければ) ノーマルプレーンが使用中のレイヤーにセットされる. ディスプレイ関数は引数なしでコールされる. ノーマルプレーンの全領域が,コールバックに反応して再描画されなければならない (このことは,プログラムが補助的なバッファのステートに依存していれば, それらも含む).

GLUTはディスプレイ・コールバックがいつ呼び出されるかを, ウィンドウの再描画ステートに基づいて決定する. あるウィンドウへの再描画ステートは glutPostRedisplayをコールして明示的にセットしてもよいし, あるいはウィンドウシステムによって報告されるウィンドウのダメージの結果としても 自動的になされる. ひとつのウィンドウに対する複数の再描画リクエストは, GLUT によってコールされるディスプレイ・コールバック関数の数が最小となるように まとめられる.

ウィンドウにオーバーレイが設定されているがオーバーレイ・ディスプレイ・ コールバックが何も登録されていないような場合は, ディスプレイ・コールバックはオーバーレイとノーマルプレーンの両方を 再描画する(つまり,再描画ステートかオーバーレイの再描画ステートのいずれかが 設定されていればコールされる,ということになる). この場合,使用中のレイヤーは ディスプレイ・コールバックへの入口で自動的に変更はされない

どのようにしてウィンドウへのオーバーレイとノーマルプレーンへの 異なるコールバックが設定されるか,を理解するには glutOverlayDisplayFuncの項を参照のこと.

ウィンドウが生成された時,そのウィンドウに対する ディスプレイ・コールバック関数は存在していない. ウィンドウが開かれる前に,そのウィンドウに対するディスプレイ・ コールバック関数をインストールするのは, プログラマーの責任である. ディスプレイ・コールバックは表示されるどんなウィンドウに対してでも 登録されなければならない. ディスプレイ・コールバックを登録せずにウィンドウが表示しようとすると, fatal error が発生してしまう. GLUT 3.0 と同様に, NULL glutDisplayFuncに(引数として)渡すのは,illegal である. ディスプレイ・コールバックを「登録解除」する方法はない (他のコールバック・ルーチンには可能なのであるが).
※ 注:原文では(though another callback routine can always be registered)と なっており,そのまま訳すと「他のコールバック・ルーチンでは常に 登録可能だがディスプレイ・コールバックだけは登録解除できない」となり, 意味がおかしくなるため「他のコールバック・ルーチンでは (引数にNULLを渡すことで)常に登録解除可能だが, ディスプレイ・コールバックだけは登録解除できない」と解釈した.

ディスプレイ・コールバックから返ってくると, (glutLayerGet(GLUT_NORMAL_DAMAGED)のコールによって返される) ウィンドウの ノーマル・ダメージステートはクリアされる. オーバーレイ・ディスプレイ・コールバックが登録されていなければ, (glutLayerGet(GLUT_OVERLAY_DAMAGED)のコールによって返される) ウィンドウのオーバーレイ・ダメージステートもクリアされる.


next up previous contents index
Next: 7.2 glutOverlayDisplayFunc Up: 7 Callback Registration Previous:7 Callback Registration
Mark Kilgard
Fri Feb 23 08:05:02 PST 1996