[前] 目次 [次]
SDL_GetTicks() は過去の任意の時点から経過した時間を 1/1000 秒単位で答えます。
#define TICK_INTERVAL 30 Uint32 TimeLeft(void) { static Uint32 next_time = 0; Uint32 now; now = SDL_GetTicks(); if ( next_time <= now ) { next_time = now+TICK_INTERVAL; return(0); } return(next_time-now); }
SDL_Delay() によって 1/1000 秒単位の時間で待つことができます。 SDL がサポートしている OS はマルチタスクなので、 要求された時間通りに正確にアプリケーションが 遅れることを保証する方法はありません。 これはある特定の時間に起こすよりも、 しばらくアイドリングする方法として使われるべきです。
SDL_Delay() によって 1/1000 秒単位の時間で待つことができます。
SDL がサポートしている OS はマルチタスクなので、 要求された時間通りに正確にアプリケーションが 遅れることを保証する方法はありません。 これはある特定の時間に起こすよりも、 しばらくアイドリングする方法として使われるべきです。
{ while ( game_running ) { UpdateGameState(); SDL_Delay(TimeLeft()); } }