C 如何将帧速率限制为60fps?

C 如何将帧速率限制为60fps?,c,graphics,sdl,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)

好吧,我试图将帧速率限制在每秒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);
}
#定义勾选间隔30
Uint32时间限制(无效){
静态Uint32下一次时间=0;
Uint32现在;
now=SDL_GetTicks();

如果(next_time您需要在绘制当前帧之前记录时间,然后从那时起延迟适当的时间

例如,一些用于执行此操作的伪代码

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

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

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

例如,一些用于执行此操作的伪代码

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

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

没有跟上您的要求。您可以发布一个示例吗?
markedTime=currentTime();
drawFrame();
delayFrom(markedTime,1/60);
好的,我明白了,除了delayFrom.markedTime和1/60。两者之间的关系是什么?
markedTime
是调用
drawFrame()
之前记录的时间。
delayFrom()
是一个从给定时间延迟的函数,而不是“现在”.
1/60
是从第一个参数开始延迟的时间量,以秒为单位。很抱歉,我今天似乎无法理解这一点。您能告诉我如何从第一个参数开始延迟1/60吗?我不明白。您可以发布一个示例吗?
markedtime=currentTime();
drawFrame();
delayFrom(markedtime,1/60)好的,我明白了,除了delayFrom.MarkedTime和1/60。两者之间的关系是什么?
MarkedTime
是调用
drawFrame()
之前记录的时间。
delayFrom()
是一个从给定时间延迟的函数,而不是“现在”.
1/60
是从第一个参数开始延迟的时间量,以秒为单位。很抱歉,我今天似乎无法理解这一点。您能告诉我如何从第一个参数开始延迟1/60吗?为什么需要限制帧速率?这个问题最近出现了几次,解决方案是(几乎总是)不封顶,调整。为什么需要封顶帧速率?这个问题最近出现了好几次,解决方案是(几乎总是)不封顶,调整。