今回は、立方体がくるくる回るアニメーションを作ってみます。
void glutIdleFunc(void (*func)(void))
キー入力や、画面の書き換えといった、イベント処理がないときに呼ばれ続ける関数を登録する。アニメーション用の関数を1つ作って、それを登録すれば、呼ばれ続けるので、アニメーション処理ができる。void glutTimerFunc(unsigned int msecs, void (*func)(int value), value)
glutIdleFunc()は、イベントがないときに呼ばれ続ける関数を登録するが、glutTimerFunc()は、一定時間が経過したときに呼ぶ関数を登録する。どちらも、繰り返し関数を呼ぶため、アニメーションできますが、今回は、glutIdleFunc()を使うことにしました。
グローバル変数
立方体の回転角度を持つ変数として、rotを宣言しています。main()の中
glutIdleFunc()を呼んで、idle_func()を登録しています。display_func()の中
今回は、回転角度を変数で持っているので、glRotatef()にこの値を渡して回転させます。idle_func()の中
この関数では、時刻から立方体の回転角度を計算します。計算するといっても、単に0.1倍しているだけですが。
使っている関数は、次の2つです。glutGet(GLUT_ELAPSED_TIME)
glutInit()を呼んだときからの時間(ミリ秒単位)を返します。glutPostRedisplay()glutに画面を描き直す必要があることを知らせます。
アニメーションもできて、だんだんできることが増えてきました。