好吧,所以我试图以每秒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());
如何在没有超过它的情况下限制我的帧速率,或者让它过早封顶?
答案 0 :(得分:3)
您需要在绘制当前帧之前记录的时间,然后从然后延迟适当的数量。
例如,一些伪代码就是
markedTime = currentTime();
drawFrame();
delayFrom(markedTime, 1/60);
markedTime是调用drawFrame()之前记录的时间。 delayFrom()是一个从给定时间而不是“现在”延迟的函数。 1/60是从第一个参数延迟的时间量,以秒为单位。