36Fermer38
BrunniLe 17/04/2010 à 14:11
Il suffit d'avoir deux données: l'heure logique du jeu et l'heure réelle.
Genre j'ai fait ma frame, je suis donc à l'heure logique 20 ms (pour du 50 fps). La vraie heure (système) est 2 ms, c'est le temps que le rendu a pris, alors j'attends 18 ms. Peut être que cette attente sera en fait de 30 ms donc on se retrouvera à une horloge réelle de 32. Prochaine frame, l'heure logique sera 40. Même raisonnement: on attend 8 ms, etc.
Ensuite en cas de retard (heure réelle > heure logique) tu peux tenter de faire du frameskip, c'est à dire de sauter les parties lourdes qui n'ont pas d'effet sur le déroulement du jeu lorsqu'elles ne sont pas présentes, comme l'affichage de la prochaine frame. Et ce jusqu'à ce que tu aies rattrapé le retard (heure logique <= heure réelle). En cas de retard trop important (p.ex. déjà skippé plus de 5 frames de suite) tu peux annuler le retard (heure logique = heure réelle) afin d'afficher quand même quelque chose.