SDL_Delay()を使って指定した時間待つことができる。
void SDL_Delay(Uint32 ms);
引数にはミリ秒を指定。ただ場合によっては遅延があることもある。
サンプルではこれとSDL_GetTicks()を使ってフレーム待ちを実装している。それは次の通り。
#define FRAMES_PER_SEC 50 void WaitFrame(void) { static Uint32 next_tick = 0; Uint32 this_tick; /* Wait for the next frame */ this_tick = SDL_GetTicks(); if ( this_tick < next_tick ) { SDL_Delay(next_tick-this_tick); } next_tick = this_tick + (1000/FRAMES_PER_SEC); }
これで50フレーム毎秒で更新されるようにしている。
60フレームじゃなかったのか。日本ならNTSCの60フレームにすることが多いと思うけど。作者はPALの地域の人なのかな。