Bonjour à tous, après de longues heures de réflexion et quelques poignées de cheveux en moins, je viens vous demander conseil à propos de la gestion du temps écoulé dans un programme.
Je suis en train de développer une application qui simule le comportement d'un ensemble masse-ressort. J'aimerai maintenant que l'écoulement du temps dans cette simulation semble uniforme, quelle que soit la fréquence de rafraîchissement (donc que la simulation ne semble pas ralentie avec un processeur moins costaud ou avec plus de données à traiter).
Pour cela j'ai essayé d'utiliser les fonctions clock() de ctime et glGet(GLUT_ELAPSED_TIME) de glut, mais ces deux fonctions semblent être limitées de la même manière : elle ne me renvoient le nombre de millisecondes qu'avec une précision de 15 millisecondes...
J'ai lancé le programme suivant pour le vérifier :
Et le résultat concorde :
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 #include <cstdlib> #include <iostream> #include <ctime> using namespace std; static clock_t t_origine = clock(); int main(int argc, char *argv[]) { int dt; do{ dt = clock() - t_origine; cout << dt << ", " << flush; } while( dt < 100 ); system("PAUSE"); return EXIT_SUCCESS; }
0, ..., 0, 16, ..., 16, 31, ..., 31, 47, ...
Après moultes recherches avec mon ami google je suis toujours broucouille, je ne trouve aucun fils de discussion à ce sujet...
Donc première question, est-ce un comportement normal ou est-ce que ça vient... je sais pas d'une option de compil ou autre ?
Deuxième question, vais-je devoir gérer le problème à l'envers, à savoir prendre le nombre de fps pour en déduire le pas à utiliser dans la simulation, ou existe-t'il une solution plus propre, et qui sera moins galère à mettre en place ?
merci de votre aide !
Partager