如何以60fps的速度限制帧速率?

时间:2011-04-10 01:17:58

标签: c graphics sdl

好吧,所以我试图以每秒60帧的速度限制帧率,但我正在使用的方法是将它减慢到40帧。

#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(TimeLeft());

如何在没有超过它的情况下限制我的帧速率,或者让它过早封顶?

1 个答案:

答案 0 :(得分:3)

您需要在绘制当前帧之前记录的时间,然后从然后延迟适当的数量。

例如,一些伪代码就是

markedTime = currentTime();
drawFrame(); 
delayFrom(markedTime, 1/60);

markedTime是调用drawFrame()之前记录的时间。 delayFrom()是一个从给定时间而不是“现在”延迟的函数。 1/60是从第一个参数延迟的时间量,以秒为单位。