SFML community forums

Help => General => Topic started by: Teknol on September 16, 2017, 12:03:42 pm

Title: Fps Check every second
Post by: Teknol on September 16, 2017, 12:03:42 pm
Now currently I have a system that calculates the fps (not 100% accurate but good enough) and out puts it into a txt file.

Now I'm trying to make it output only once a second and/or limit the output so there can only be 100 output inside the text file and deletes older outputs.

I tried many different way to slow down the output  but when I put it on a slower clock the fps becomes something like 0.9. (Which kind of makes sense because it's on a slower clock but)

Thank you for reading, anyways here is my code inside main(). I removed irrelevant code


std::ofstream fpsLog;
fpsLog.open("fps_log.txt");

sf::Clock fpsclock
sf::Time FPSTimer
while (window.isOpen())
{
FPSTimer = fpsclock.getElapsedTime();
fpsLog << 1.0f / FPSTimer.asSeconds();
fpsclock.restart().asSeconds();

}


Sent from my iPhone using Tapatalk
Title: Re: Fps Check every second
Post by: AlexAUT on September 16, 2017, 12:44:54 pm
This forum does support Code tags, please use them  ;)

You could do something simple like
sf::Time interval = sf::seconds(1);
float fpsCounter = 0;
while(window.isOpen)
{
  fpsCounter ++;
  if(fpsclock.getElaspedTime() >= interval)
  {
    fpsLog << fpsCounter / interval.asSeconds();
    fpsCounter = 0;
    fpsclock.restart();
  }
}
I just wrote it without testing, but it should be accurate enough (+- 1Frame) and very short to implement.

Also keep in mind that FPS is not linear and does not show peaks in frametime (if you measure a whole second into one value, as in the example). If your game does not feel smooth but still has >= 60FPS you should look at frametime variation.


P.S. fpsclock.restart() does return the elapsedTime before restarting, so your .asSeconds() does nothing ;). But you could write instead of
FPSTimer = fpsclock.getElapsedTime();
//...
fpsclock.restart().asSeconds();
simply write:
FPSTimer = fpsclock.restart()
Which does exactly the same :)


AlexAUT
Title: Re: Fps Check every second
Post by: Teknol on September 17, 2017, 02:06:21 am
Thank you! Works very smoothely


Sent from my iPhone using Tapatalk