我正确计算我的FPS吗? [英] Am I calculating my FPS correctly?

查看:444
本文介绍了我正确计算我的FPS吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我想知道我是否正确计算我的FPS:

  Uint32 delayFrom(float startTime,float endTime){ 
return(endTime - startTime);
}


int main(){
int numFrames = 0;
Uint32 startTime = SDL_GetTicks();
while(!done){
frameTime = 0;
float fps =(numFrames /(float)(SDL_GetTicks() - startTime))* 1000;
cout<< fps<< endl;
SDL_Delay(delayFrom(frameTime,1/60));
++ numFrames;
}
}


解决方案

p> int main(){
int numFrames = 0;
Uint32 startTime = SDL_GetTicks();
while(!done){
++ numFrames;
Uint32 elapsedMS = SDL_GetTicks() - startTime; //从循环开始的时间
if(elapsedMS){//跳过第一帧
double elapsedSeconds = elapsedMS / 1000.0; // Convert to seconds
double fps = numFrames / elapsedSeconds; // FPS is Frames / Seconds
cout<< fps<< endl;
}
SDL_Delay(1.0 / 60.0); //使用浮点除法而不是整数
}
}


So I was wondering if I'm calculating my FPS correctly:

Uint32 delayFrom(float startTime, float endTime){
    return(endTime - startTime );
}


int main(){
    int numFrames = 0;
    Uint32 startTime = SDL_GetTicks();
    while(!done){
        frameTime = 0;
        float fps = ( numFrames/(float)(SDL_GetTicks() - startTime) )*1000;
        cout << fps << endl;
        SDL_Delay(delayFrom(frameTime, 1/60));
        ++numFrames;
    }
}

解决方案

int main() {
  int numFrames = 0;
  Uint32 startTime = SDL_GetTicks();
  while (!done) {
    ++numFrames;
    Uint32 elapsedMS = SDL_GetTicks() - startTime; // Time since start of loop
    if (elapsedMS) { // Skip this the first frame
      double elapsedSeconds = elapsedMS / 1000.0; // Convert to seconds
      double fps = numFrames / elapsedSeconds; // FPS is Frames / Seconds
      cout << fps << endl; 
    }
    SDL_Delay(1.0/60.0); // Use floating point division, not integer
  }
}

这篇关于我正确计算我的FPS吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆