- 395 名前:デフォルトの名無しさん [2008/06/02(月) 16:06:37 ]
- アニメーション
1 アニメーション ピクセルの色を制御することができれば、図形を自由自在に表現することができるようになる。更に、図形の 位置、形状または色を徐々に変化させて図面を更新することにより、アニメーションの実現が可能である。そのポ イントは 1. 図形の位置、形状または色を少し変化させる 2. 変化した図面を再描画する 3. 手順1 へ戻る の3 点にある。「繰返して図形に変化を与える」には関数 void glutIdleFunc(void (*f)(void)) を用いて「変化を与える」関数fを指定する。指定された関数fは繰り返して呼び出されるため、その中に図形 の座標、形状、色を変化する文があれば、定期的に図形に変化を与えることになる。更に、変化した場合再描画 する関数 void glutPostRedisplay() を呼び出すことで図面を更新することを指示する。 関数glutIdleFunc で指定した関数f はイベントが起きていない限り繰返して呼び出される。図面更新の時間間 隔の調整はSleep(int seconds) 関数が有効だが、繰り返しの時間間隔はやはりCPU の性能やコンピュータに与え られているタスクにより異なる。CPU の性能などによらずに時間間隔を制御したい場合は、関数 void glutTimerFunc(unsigned int msecs, void (*f)(int value), int value) を使うことが可能。この関数は指定されたミリ秒数msecs の後に関数f(int value) を1 回呼び出す。また、呼び出 しを区別するために、与えられた整数value を関数f に渡す。関数glutTimerFunc を用いてアニメをつくるには、 繰り返しを実現するために関数f(int value) の中で最後にglutTimerFunc を再度呼び出すように指示しなければ ならない(glutIdleFunc を用いる場合は不要)。 以下は例を用いてglutIdleFunc の使い方を説明する。ウインドウの中で横を移動し、境界に当たると移動方向 を逆転するボールのアニメーションを考えよ。このアニメは塗りつぶした円形の描画と上記の仕組みを用いて実 現でき、プログラムBall.c を用いて簡単に説明する。
|

|