ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

フレーム待ち

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の地域の人なのかな。