begin process at 2012 02 10 18:06:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Gestion du temps


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Gestion du temps

jeudi 18 octobre 2007 à 09:14:51 | Gestion du temps

Darksheep

Bonjour,
Apres avoir lu de très intéréssant articles et  tutoriaux comme celui de gros pixel (http://www.grospixels.com/site/animation1.php)
ou encore celui du site du zéro sur la gestion du temps, je reste quand même perplexe...

 D'apres ce que j'ai compris dans ces tutos , Le FPS est le nombre d'image par seconde qu'effectue le programme, mais aussi
 le nombrede boucles par seconde qu'effectue le programme.
 Apres avoir cherché un peu je suis tombé sur la SDL_gfx lib qui me permet de limiter mon FPS, afin que mon programme tourne
 de la même fasson sur n'importe quelle machine  . En plus de cela, avec un SDL_Delay(); bien placé qui permet de réduire la consommation de cpu...

  -Je cherche le meilleur moyen de gerer le temps pour un jeu video, qui serait selon moi (arretez moi si je me trompe)
    * Une boucle d'évenement et d'action se déroulant à fréquence constante (50 ~75hz)
    *Puis un affichage ne dépendant que du hardware de la machine sur laquelle le prog est executé pour atteindre un FPS    maximum.

En Bref :
J'aimerai que si la machine ramme, ce soit  Le FPS qui soit pénalisé (le nombre d'image affichée par seconde) ET NON
 La fréquence de la boucle d'évent ;
 Donc un FPS séparé de la fréquence de la boucle !

Voila pour le théorique maintenant je bloque pour la pratique :'(
jeudi 18 octobre 2007 à 21:21:37 | Re : Gestion du temps

juju12

Ben si tu veux que gestion des messages et affichage des images ne soient pas synchronisés, t'as pas beaucoup d'autre choix que de les mettre dans deux threads séparés...
vendredi 19 octobre 2007 à 09:41:36 | Re : Gestion du temps

Darksheep

J'aimerais si possible éviter le multithread,
J'avais lu un tuto avec allegro et les timers, et il me semblent qu'ils avaient réussi a bloquer les calculs à 60 hz et le fps était déterminé par la machine( BPS_TO_TIMER(60);)
Il avaient fait en sorte que si la machine manque de puissance, priorité absolue a la boucle de calcul 60hz, et ya que le Fps Qui morphle. C'est cela que je recherche
 Je suis tombé SDL_gfx mais bon bloquer Calculs + Déssin à 50hz ne me semble pas satisfaisant , même si ça permet une consommation modérée du temps cpu.
  J'ai trouvé ça aussi
bool done = false
while(!done)
Uint32 temps = SDL_GetTicks();
if(SDL_GetTicks() > (temps + 20) )
{
/* Code... */
}

Affichage();
Mais bon est-ce qu'en cas de retard la boucle de calculs sera prioritaire sur celle d'affichage ? si l'affichage dure trop longtemps,
metttons allez soyons fou 40 ms comment faire pour rattrapper ce retard ? Jai bien une petite idée je vais sérieusement y réffléchir XD
vendredi 19 octobre 2007 à 10:04:02 | Re : Gestion du temps

Darksheep

Donc de fasson plus claire voila où j'en suis :

while(!done)
   {

     long ElapsedTicks = SDL_GetTicks() - LastTick;
     int rattrapage = ElapsedTicks/(1000/75);
    while (rattrapage >0 )
    {
     HandleInput();
     DoThink();
     rattrapage--;
    }
     DoRender();
    //SDL_framerateDelay(&FPS_man);
   }

de fasson à ce que si on pren du retard, on repasse par la boucle de calcul autant de fois qu'il faut :
Imaginons qu'il s'est passé pile poil 1000/75 ms depuis la derniere frame; rattrapage vaut   1;
et  puis on execute une fois la boucle évent et on affiche.
Maintenant on a pris 2* 13ms de retard, rattrapage vaut 2;  on execute 2 fois la boucle d'évent...
Ceci devrais "Théoriquement " fonctionner mais bon    .... mon fps diminue progressivement sans s'arretter mais de fasson de plus en plus lente.... :'(    Help !
 
vendredi 19 octobre 2007 à 12:40:35 | Re : Gestion du temps

Darksheep

Réponse acceptée !
Bon apres m'être un peu creusé la tête :


LastTick = SDL_GetTicks();
FPS_Calculator.Start();
 while(!done)
   {

 long delta = SDL_GetTicks() - LastTick;
 long rattrape = delta/(1000/75);
     while(rattrape>0)
     {
      HandleInput();
      DoThink();
      LastTick = SDL_GetTicks();
      rattrape--;
     }

     DoRender();

    //SDL_framerateDelay(&FPS_man);
   }

ça m'a lair de marcher XD
dsl la prochaine fois je réfléchirais plus avant de poster
En espérant que ça puisse un jour aider un débutant :)


Cette discussion est classée dans : temps, gestion, seconde, apres, fps


Répondre à ce message

Sujets en rapport avec ce message

gestion du temps en fraction de seconde dans C [ par mouloudh ] Bonjour la communauté,j'essaie de faire un programme qui simule le dértoulement d'un tapis roulant, avec vitesse et detecteurs de début et de fin. J'a mini projet: gestion d'emploi du temps en langage c [ par dedective ] Bonjour tt le monde voila je ss charger de réaliser un mini projet qui fait la gestion d'un emploi du temps il fait ajouter/supprimer des élèves ou bi Gestion du temps [ par ArthurAuguste ] Bonjour, Est-il possible de calculer des durées en C++ sous Windows. J'ai vu GetLocalTime et SetLocalTime qui utilisent la structure SYSTEMTIME mais j Reglement , le respect par la connaissance [ par CCJ ] Bonjour. Au fur et a mesure que le temps passe je me rend compte que les infractions au reglement de codessources augmentent , en effet avec la popula Timer - gestion du temps [ par aurelien2723 ] Salut!Je fais une application graphique qui va appeler différents programmes à intervalles différents, et réglables.J'aimerais savoir comment décompté Vous codez quoi ? 2 [ par SAKingdom ] Vous vous souvenez peut-être du sondage que j'avais fais il y a quelque temps ? (juste ici)Eh ben voila, je renouvelle ce sondage.Vous codez quoi ces Temps d'execution d'un programme [ par abdoulax ] Bonjour,J'ai besoin de mesurer le temps d'éxecution d'un bou de code pour comparer les performances d'execution en fonction de la plateforme: windows, arreter une fonction apres n seconde? (langage c sous linux) [ par tileroy ] Je dois creer un jeu de dame humain contre ordinateur.Pour cela je fais une analyse dynamique des coups possibles grace a une fonction; "prolongerSolu gestion de fichier et du temps de la machine [ par rasta_raf ] Salut tout le monde !-Comment gérer a partir de Visual C++ l'écriture et le copiage de fichiers d'un dossier à un autre.-Comment pouvoir faire une act


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales