SDL3-使用 GetTicks 函数实现 sleep

如果要在 SDL3 下实现类似等待一段时间的效果可以使用 ‘GetTicks()’ 函数进行操作:
GetTicks() 语法:

1
Uint64 SDL_GetTicks(void);

其返回的是自 SDL 库被调用过去了多久,可以简单理解为相对的当前时间,以毫秒来计时。
那么仅仅是返回当前时间怎么实现 sleep() 呢?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    bool quit = false;
    unsigned int lastTime = 0, currentTime;

    while (!quit){
        currentTime = SDL_GetTicks();
        if (currentTime > lastTime + 100 ){
            SDL_Log("Report: %d\n", currentTime);
            lastTime = currentTime;
        }
    }

从字面上,这个代码会每隔 100 毫秒执行一次 SDL_Log 打印。关键就在于在这个循环内会持续不断的进行一个 if 语句判断: ‘if (currentTime > lastTime + 100 )’ 。
我们将 SDL_GetTicks 的数据保存在 currentTime 内,同时还有 lastTime 来辅助我们进行计时。lastTime 初始值为 0,则在 currentTime 为 101 的时候语句成立,然后开始执行语句,在最后改变 lastTime 的值。
代码运行时 SDL_Log 输出的 currentTime 至也可以佐证这点。

萌ICP备20241614号