Comment utiliser les FPS

Résolu
cs_keil Messages postés 52 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 25 octobre 2005 - 12 août 2005 à 16:03
rom2n Messages postés 4 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 15 août 2006 - 14 janv. 2006 à 18:58
Oui, betement depuis que j'ai appris a codé en openGL, j'ai toujours utilisé une fonction qui me permette de récupérer les FPS.

Je ne sais vraiment pas comment m'en servir.

J'ai fait un prog qui fait grandir un rectangle sur mon écran.

J'ai testé ce prog sur un autre PC et... horreur, elle s'ouvrait 10x plus lentement environ.

Comment palier à ce problème?

Faut-il limiter les FPS? comment faire?

7 réponses

rom2n Messages postés 4 Date d'inscription vendredi 1 juillet 2005 Statut Membre Dernière intervention 15 août 2006 1
14 janv. 2006 à 18:58

1
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
12 août 2005 à 16:23
Salut,

Ton programme est actuellement synchronise avec le processeur:
processeur n fois plus rapide => programme n fois plus rapide => mouvement du rectangle n fois plus rapide

Il faut que tu utilises l`horloge. Par exemple timeGetTime.
Cette fonctione evolue a la meme vitesse quelque soit le processeur sur lequel elle s`execute.

Donc lorsque tu modifies la taille du rectangle, modifie la en fonction de timeGetTime et non pas d`une variable que tu incrementes a chaque boucle.
0
cs_keil Messages postés 52 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 25 octobre 2005
12 août 2005 à 16:33
euh j'ai pas trop compris. Je vais donner plus de précisions:

Dans mon prog, j'ai une variable 'fps'.

mon rectangle est un vulgaire GL_QUADS qui est aggrandit grâce à
glScalef(scale,scale,scale) où 'scale' est une variable relative à fps.
Admettons scale=3*fps+oldscale.

Ce qui se passe c'est que le rectangle s'agrandit différemment selon les machines sur lesquelles le prog tourne.

Je pense que c'est du à un mauvais calcul de 'scale'.
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
12 août 2005 à 17:37
Il a truc pas logique plus il a de FPS plus le rectangle s'agrandira
vite, a mon avis se serait plus juste de faire un truc du style:
scale=30/fps+oldscale



Mais se serait encore de le faire avec une notion du temps comme le dis Galmiza.

Pour faire simple tu peux mettre un Sleep(25); avant scale=3*fps+oldscale.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
12 août 2005 à 18:07
Tu fais scale += k*deltaTime;

avec k au choix, plutot autour de 0.001f.
et deltaTime, la difference entre la valeur de timeGetTime au moment du rendu MOINS la valeur de timeGetTime du dernier rendu.

timeGetTime donne un resultat en milliseconde.

Dans ce cas ton quad grandira sans cesse. Mets plutot:

scale = 100*(1+sinf(float(timeGetTime)*0.001f));

scale evoluera sur tous les PC de la meme facon: cad, lentement de 0 a 200.
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
12 août 2005 à 18:09
taille 1

taille 2

taille 3

juste un essaie car je me suis encore plante dans les tailles
0
cs_keil Messages postés 52 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 25 octobre 2005
16 août 2005 à 10:15
heu je vais tester tout ce que vous me proposer quand j'aurais brancher mon vieux PC.



Galmiza, ta solution à l'air sympa mais à vue d'oeil je suis sur que
l'augmentation du rectangle ne se fera pas de façon rectiligne
uniforme. C'est pas trop un problème mais ça ressemble + à une solution
bricolage.



Alcantornet, t'as solution à l'air bien aussi mais admettons que les
FPS d'une machine tourne à beaucoup + de 30, le rectangle va s'agrandir
lentement.

Tu me diras bien sûr de changer le chiffre 30 par un autre mais ça ne
change rien au problème car décider arbitrairement d'une valeur
montrera forcément des différences entre une machine dernier cri et un
olschool 486SX lol, donc c'est à vue d'oeil aussi une solution bricolée.



Je vous parle juste d'un rectangle pour l'instant parce que j'en fais
une classe. Mais quand j'aurais d'autre objets dans la scène j'aurais
encore moins de FPS.



Télécharger http://keil.du.91.free.fr/FF7-2.zip

c'est pour windows, les rectangles en question doivent se trouver sur l'écran de présentation, vous en aurez un aperçu ainsi.

J'en profite aussi pour passer une annonce:

Je veux faire un jeu qui sera disponible gratuitement sur le net qui
aura un petit peu la même gueule que dans l'exécutable, mais vous le
remarquerez sûrement, niveau map et model designing, je suis une super
quiche si bien que j'utilise des model créé par d'autre gens qui ne
sont en rien adaptés à ce que je désire faire.

Le type du jeu sera est RPG façon final fantasy 7 mais ça peut évoluer
si y'a des idées meilleures mais je veux pas mettre la barre trop haute
pour l'instant.



Testez les différentes 'sauvegardes du jeu' chez moi ça tourne nickel
mais je suis sur qu'à cause de l'histoire des FPS ça tournera au
ralenti chez vous.



Autre chose encore:

Chez moi j'utilise C++ pour faire de l'openGL mais au boulot vu que je
m'embête des fois, j'utilise JavaOGL pour faire de l'OpenGL et
curieusement j'ai l'impression que les FPS sont limités à 10.
Savez-vous si c'est juste une impression?
0
Rejoignez-nous