Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1123 connectés 

 


Dernière réponse
Sujet : [OpenGL] Gérer la vitesse d'affichage ?
WhitePoney le pb c que je gérais les mouvements en pixels par boucle au lieu de pixels par temps.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
WhitePoney le pb c que je gérais les mouvements en pixels par boucle au lieu de pixels par temps.
youdontcare :) attention quand même, j'ai marqué 'généralement'. cette méthode marchera nickel pour ouvrir des portes, déplacer des persos, etc. pour la simulation physique, je ne sais pas du tout comment ça marche ...
WhitePoney hoooooo je voyais pas ça comme ça ; pour moi, une animation c un objet qui va d'un point A a un point B en ayant sa vitesse de progression, je ne fixais pas un temps d'animation....
 
Je te remercie de ta réponse, je suis sûr que ça m'aidera vraiment :jap: !
youdontcare oh c'est bon on peut respirer oui ? :lol:
 
une animation c'est généralement aller d'un point A à un point B en N millisecondes.
 
c'est donc une interpolation linéaire :
positionInterpolée = A*(1-t) + B*t; // t allant de 0 à 1.
 
la stratégie simple : au début de l'animation, tu regardes le temps courant :
 
startAnimTime = GetTickCount();
 
à chaque nouvelle frame, tu choppes le temps courant :
 
curAnimTime = GetTickCount();
 
tu calcules le temps écoulé depuis le début de l'anim :
 
deltaAnimTime = curAnimTime - startAnimTime;
 
c'est maintenant que la magie opère ... :D c'est là que tu décides le temps que prend l'animation. on va dire ici 5 secondes, soit 5000 milli secondes.
 
t = deltaAnimTime / 5000;
 
ce qui te donne ton t pour l'interpolation. si t >= 1.0, l'animation est finie.
WhitePoney ?
WhitePoney

youdontcare a écrit a écrit :

- tu te bases sur le temps courant et non pas le nombre de frames calculées. par ex, GetTickCount() renvoie le nombre de millisecondes écoulées depuis le lancement de windows. il y a également des timers plus précis (timers multimedia).




 
je comprends pas trop ce que tu veux dire :sweat:

youdontcare - tu te bases sur le temps courant et non pas le nombre de frames calculées. par ex, GetTickCount() renvoie le nombre de millisecondes écoulées depuis le lancement de windows. il y a également des timers plus précis (timers multimedia).
 
- oui, ça ne pose aucun problème ... tu peux regarder les structures de la sdk de quake3, c'est assez gros d'ailleurs.
WhitePoney Salut, voilà j'ai deux questions :
-> dans un programme utilisant l'opengl, comment peut-on gérer la vitesse du jeu ? Est-ce qu'on doit calculer le temps que met le PC à effectuer une boucle du jeu puis attendre le temps restant (en ayant donc un FPS prédéfini, du genre 30 fps) ? Cette solution ne me semble pas bonne, alors comment fait-on dans les jeux ?
 
-> dans mes programmes, puis-je utiliser des stuctures d'unités (pion, personnage) énormes, avec beaucoup d'attributs (en veillant bien sur a éviter les copies sur la pile et les choses comme cela) ?
 
merci

 

[edtdd]--Message édité par WhitePoney--[/edtdd]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR