2011-04-11 25 views
6
void CalculateFrameRate() 
{  
    static float framesPerSecond = 0.0f;  // This will store our fps 
    static float lastTime = 0.0f;  // This will hold the time from the last frame 
    float currentTime = GetTickCount() * 0.001f;  
    ++framesPerSecond; 
    if(currentTime - lastTime > 1.0f) 
    { 
     lastTime = currentTime; 
     if(SHOW_FPS == 1) fprintf(stderr, "\nCurrent Frames Per Second: %d\n\n", (int)framesPerSecond); 
     framesPerSecond = 0; 
    } 
} 

¿Debo llamar a esta función en void play(void) o void display(void)?¿Cómo se calcula el FPS en OpenGL?

¿O no hace ninguna diferencia?

+0

¿Qué es 'play (void)'? Tenga en cuenta que las cosas son un poco más complicadas ya que las GPU son impredecibles: http://stackoverflow.com/questions/8779936/correct-way-to-calculate-the-fps –

Respuesta

4

Debe ponerlo en el bucle de la pantalla. Here's un artículo que explica algunas complejidades de los bucles del juego que deberías leer.

1

Si tiene algún tipo de rutina de sincronización, le sugiero que realice la llamada justo después de eso, es decir, antes de los grandes cálculos. De lo contrario, los cálculos de tiempo pueden ser inestables y dar valores diferentes en cada ciclo ... y una nota, es mejor tener un FPS constante que un FPS fluctuante solo para maximizarlo. La fluctuación aún tan sutil hace que el espectador/jugador se dé cuenta de que todo es un juego y la inmersión se pierde.

Cuestiones relacionadas