Bonjour,
J'aimerais connaitre les techniques pour gerer les frame rates. Quelqu'un connaitrait il une adresse pour un tutorial... J'utilise Builder 5 et un composant OpenGL, qui cree une fenetre OpenGL.
MErci d'avance pour vos reponses...
StarSky![]()
Bonjour,
J'aimerais connaitre les techniques pour gerer les frame rates. Quelqu'un connaitrait il une adresse pour un tutorial... J'utilise Builder 5 et un composant OpenGL, qui cree une fenetre OpenGL.
MErci d'avance pour vos reponses...
StarSky![]()
Bonjour.
Dans ta procédure pricipale, qui dessine la scène, tu dois faire comme suis :
Déclare les trois variables suivantes :
Maintenant, dans ta procédure dessinnant la scène :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 float FramesParSecondes = 0; float FrameRate = 0; float LastTime = 0;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 void DessinerScene() { float CurrentTime = 0; //Temps courant pour le calcul de Frames // ... // Ici, tu dessine ta scène // ... // Ensuite tu bascule le contendu des deux tampons (si nécéssaire) SwapBuffer( Hdc ); // Voici le buffet :) CurrentTime = GetTickCount * 0.001; FramesParSecond++; If ( CurrentTime - LastTime > 1.0 ) { LastTime = CurrentTime; FrameRate = FFramesPerSecond; FramesParSecond = 0.0; } } }
Oh ça me rappelle la technique du tut sur GameTutorials.
Si tu veux tu peux trouver ce tut ici :http://www.gametutorials.com/Tutoria...OpenGL_Pg1.htm
A+
Si je me souviens bien il y a moyen d'avoir une meilleure résolution de timer avec queryPerformance() et ses homologue, c très bien expliqué sur certain forum (trouvé avec google).
Tu as parfaitement raison Twofy, mais cette fonctions API n'est pas supportés sur toutes les machines.
Microsoft dit :
Donc QueryPerformanceCounter et QueryPerformanceFrequency sont plus rapides mais moins portables... Malgré qu'il plutôt rare de rencontrer des systèmes qui ne supportent pas ces commandes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If your system supports a high-resolution counter, you can use QueryPerformanceCounter and QueryPerformanceFrequency to do high-resolution timings instead GetTickCount....
Heureux de ne pas avoir dit de bétise!Mais je crois bien que le RTC de toutes les machines maintenant supporte les fonctions QueryPerformance(). Le tout est de savoir quel type d'unités renvoi le RTC, on doit étudier un registre pour voir si il s'agit de milliseconde ou de tick CPU (je sais plsu où j'ai lu ça désolé).
Merci d'avoir confirmé, c'et ça le partage de connaissance ;o)
Juste une précision, si tu utilises le vsync (recommandé), tes frames vont se synchroniser avec l'écran. Donc, si tu est en 85hz par ex., ne t'étonne si ton FPSmètre n'affiche jamais d'autre valeurs que 85 et 42.5, c'est que ton FPS réel (celui qui reflète les perfs de ton moteur), est qqpart entre les 2. Et si il affiche tjrs 85, il est peut être en réalité très très au dessus...
Partager