cs_keil
Messages postés52Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention25 octobre 2005
-
12 août 2005 à 16:03
rom2n
Messages postés4Date d'inscriptionvendredi 1 juillet 2005StatutMembreDernière intervention15 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.
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 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.
cs_keil
Messages postés52Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention25 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'.
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 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.
cs_keil
Messages postés52Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention25 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.
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?