Vitesse relative/absolue

Voila (oui encore moi et mon OpenGL :wink: ) je fais un cube, je le fait tourner en lui applicant une matrice de rotation don l’angle=angle+10 a chaque refresh.
Donc mon cube tourne de 10 degres a chaque immage. Hors voila mon prob , la vitesse de rotation de mon cube va du coup dependre du nombre de FPS. Plus ma resolution sera grande plus il tournera lentement, plus le PC sera rapide plus il tournera vite. Hors je voudrais appliquer ma transformation independament du nombre de FPS mais en fonction du temps. En fait par ex faire tourner mon cube a 1Tr/s et ce qu’il y ai 100FPS ou 2 FPS.
Donc je supose que mon angle = angle + & où &= fonction du temps. Mais comment faire? Il faut pas utilser une fonction d’interuption Timer!??
Ils font comment dans les jeux ??

Pile poil, j’avais deja trouvé des fonction de time sous VC++ mais je savais pas comment les utiliser et les metre en oeuvre.
C’est dingue ça, que des truc aussi simple nous echapent alors que parfois il nous arrivent de faire des truc de ouf!

En tout cas merci :smiley:

le plus imple c d’utiliser la fonction GetTickCount() qui te retourne le nombre de ticks (millisecondes) depuis le demarage de winwin. et de t’en servire pour calculer le temps passe depuis la frame precedente dans un truc du genre :

Int32 previousFrame;
Int32 Frame;
float delta;

previousFrame = GetTickCount();

while(1)
{
Frame = GetTickCount();

// Calcule le delta, en seconde : plus simple :wink:
delta = (float)(Frame - previousFrame)/1000.0f;

// Appel la main
mafunctionquifaitdestrucs(delta);

previousFrame = Frame;
};

et apres si tu as toute tes vitesse/angles en unite par seconde, tu multiplie juste par delta :
si tu tourne a 360 degree par seconde, tu dois tourner ta spherre de 360.0f*delta. et hop