[C++][JEU] Maintenir un nombre de Frames/secondes
Bonjour,
je développe un jeu en 2D avec SDL.
Pour l'instant, mon jeu fonctionne comme ceci :
Code:
1 2 3 4 5 6
| boucle while infinie // chaque passage correspond à une frame
{
traitement de l'affichage
affichage de la frame
usleep(un moment) // pour pas faire une boucle folle, qui pompe toute la puissance de la machine
} |
Mon souhait est que le nombre de Frames/secondes soit le même sur chaque machines.
Il faut donc donner une variable adéquate au usleep en fonction de la machine.
Un petit nombre sur une machine faible, et un gros nombre sur une machine puissante.
Bref, mais là je bloque.
Avec-vous des idées ?
Merci et bon jeudi
déplacé par khayyam90
Re: [C++][SDL][JEU] Maintenir un nombre de Frames/secondes
Citation:
Envoyé par Eldacar
Mon souhait est que le nombre de Frames/secondes soit le même sur chaque machines.
Il faut donc donner une variable adéquate au usleep en fonction de la machine.
Un petit nombre sur une machine faible, et un gros nombre sur une machine puissante
bien le bonjour,
attention, il ne faut pas faire de suppositions sur les machines. Tout ce que tu peux modifier c'est ton programme qui doit s'arranger pour tourner toujours à X fps.
X fps, donc tu connais le temps de chaque frame, en ms
donc, à la fin de chaque tour de la boucle principale, tu dois faire un sleep (ou un SDL_Delay) du temps restant pour arriver au temps de la frame.
SDL te donne des fonctions comme SDL_GetTicks, tu peux donc mémoriser l'instant où le tour de boucle boucle a démarré, et l'instant où ton traitement de boucle est terminé. Tu peux donc savoir le temps que le tour de boucle t'a demandé, et rajouter le temps qui manque sous forme de sleep (ou SDL_Delay)