Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1427275
  • 博文数量: 430
  • 博客积分: 9995
  • 博客等级: 中将
  • 技术积分: 4388
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-24 18:04
文章存档

2013年(1)

2008年(2)

2007年(14)

2006年(413)

分类: LINUX

2006-05-26 10:21:59

定时器

  • 取得当前时间(毫秒级)

调用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());
    }
}
 
阅读(1349) | 评论(0) | 转发(0) |
0

上一篇:线程

下一篇:字节序无关

给主人留下些什么吧!~~