定时器
时间:2006-05-26 来源:whtonline
定时器
调用SDL_GetTicks() 可以获得从过去某个时刻到现在所经过的毫秒。 |
提示: 总的来说,在游戏开发中基于时间,而不是帧率来移动对象要更好。这样在高速系统上和在低速系统上,游戏的节奏是一致的。 |
例程::
#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() 可以实现毫秒级的等待。 由于SDL支持的操作系统是多任务的,所以无法保证你的程序能够等待非常确切的一段时间。 等待相关的函数更多的是用于程序空闲一段时间,而不是在一个很确切的时刻被唤醒。 |
提示: 很多操作系统的调度时间片是10毫秒左右。调用SDL_Delay(1)将放弃当前的时间片。如果你的一个线程是很紧的循环,同时又要保持另一个线程(比如音频)运行,这就很有用。 |
例程:
{ while ( game_running ) { UpdateGameState(); SDL_Delay(TimeLeft()); } } |
相关阅读 更多 +