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; } } Should I call this function in void play(void) or void display(void)?Or it does not make any difference?
3 Réponses :
Vous devez le mettre dans la boucle d'affichage. Voici un article qui explique certaines extricacies des boucles de jeu que vous devriez lire. P>
Si vous avez une sorte de routine de synchronisation, je vous suggère de placer l'appel juste après cela, c'est-à-dire avant les grands calculs. Sinon, les calculs de chronométrage peuvent être shaky em> et donner des valeurs différentes chaque boucle ... et une note, il vaut mieux avoir un FPS stable que d'un FPS fluctuant juste pour le maximiser. La fluctuation même si subtile rend le spectateur / joueur conscient que tout est une partie et que l'immersion est perdue. P>
void CalculateFrameRate() { static float framesPerSecond = 0.0f; static int fps; static float lastTime = 0.0f; float currentTime = GetTickCount() * 0.001f; ++framesPerSecond; glPrint("Current Frames Per Second: %d\n\n", fps); if (currentTime - lastTime > 1.0f) { lastTime = currentTime; fps = (int)framesPerSecond; framesPerSecond = 0; } }
Qu'est-ce que
lecture (void) code>? Notez que les choses sont un peu plus compliquées car les GPU sont imprévisibles: Stackoverflow.com/Questtions/8779936/...