QT OpenGL FPS [Résolu]

Messages postés
28
Date d'inscription
lundi 14 février 2005
Dernière intervention
2 septembre 2005
- 25 févr. 2005 à 13:32 - Dernière réponse :
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Dernière intervention
2 novembre 2007
- 4 mars 2005 à 10:07
bonjour,



voilà j'ai passé un de mes codes glut OpenGL sous QT et en fait je
n'arrive pass à convetir mon calcule des fps qui était ultra simple.

Cad j'avais dans ma fonction display, un compteur qui évaluait
combien de fois, mon prog appelait mon display par secondes...

Donc la au lieu de me servir de glutGet(GLUT_ELAPSED_TIME) je me sers
des primitives de windows donc un bete GetTickCount().

Mais c clair que c'est pas ca le probleme, la ou ca foire c'est que je
fais mon calcule dans le paintGL() traditonnel d'un QGLWidget.

Et je me rends compte qu'en fait il ne rentre ici uniquement lorsque la fenetre est cachée.

D'ailleurs ca m'interroge sur le Ou vont mes informations de draw...

Et la ca ne peut venir que du moc...

Anyway qq'un saurait comment donc calculer mes FPS vu que cette methode ne marche pas?



j'ai bien essayé de supprimer le autoSwap, de tenter de redefinir le
updateGL, et j'ai pas tenté le glDraw car ya ecrit dans la doc que ca
appelle le paintGL...



Merci

xabi
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
28
Date d'inscription
lundi 14 février 2005
Dernière intervention
2 septembre 2005
- 4 mars 2005 à 09:00
3
Merci
ouais c'est dans l'idée, mais on m'a conseillé de faire un timer à 0
pour être equivalent à mes versions win32 et glut. Mais merci en tout
cas.

++

xabi

Merci xabila 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de xabila
Messages postés
2
Date d'inscription
lundi 14 février 2005
Dernière intervention
25 février 2005
- 25 févr. 2005 à 14:45
0
Merci
dsl sur le calcule et pas calcul
Commenter la réponse de xabilala
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Dernière intervention
16 juin 2010
- 26 févr. 2005 à 10:29
0
Merci
arg. glut. encore et toujours glut.

bon un bon conseil: fous-le a la poubelle.

(bon apparament c'est ce que t'as fait...)

va sur le site de Digiben (www.gametutorials.com), -> tutos->openGL->page2->time based movement.

t'as une fonction qu fait ca quelque part, la seule chose que t'as a
changer c'est le SDL_getTicks qu'il faut modifier par la fonction
correspondante de windows ou de QT



dis moi si ca t'a avancé...

_______________________


Omnia vincit labor improbus
Commenter la réponse de Arnaud16022
Messages postés
28
Date d'inscription
lundi 14 février 2005
Dernière intervention
2 septembre 2005
- 26 févr. 2005 à 12:05
0
Merci
ouais fin, tu sais gametutorial ca a evolué et maintenant c'est payant et c'est pas rangé pareil...



Ce qu'il me faut c juste connaitre la fonction qui est appelée à chaque frame pour afficher la scene...



Merci
Commenter la réponse de xabila
Messages postés
28
Date d'inscription
lundi 14 février 2005
Dernière intervention
2 septembre 2005
- 26 févr. 2005 à 17:07
0
Merci
donc comme je m'en doutais, y 'avait pas de solution miracle fait par gametutorial...

Je ne demandais pas comment calculer les FPS...

Mon probleme c'est qu'il n'y a pas de fonction de rendu appelé à chaque
frame accéssible par l'API de QT. le paintGL est redéfini... enfin je
crois mais c'est ce que me dit ma console....



Merci qd meme :(
Commenter la réponse de xabila
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Dernière intervention
2 novembre 2007
- 3 mars 2005 à 20:28
0
Merci
Avec Qt pour calculer le FPS, tu peux te servir des QTimer, voire aussi pour rafraichir ton paintGL.

Explication :
Pour rafraichir automatiquement : dans initializeGL() tu fait
connect(&qTimerRedraw, SIGNAL(timeout()), this, SLOT(timerRedraw()));
qTimerRedraw.start(10);
-> le slot timerRedraw :
void TA_CLASSE::timerRedraw()
{
updateGL();
}

Pour calculer le FPS : tu creer (par exemple) un int cptPaintGL que tu initialise a 0 dans initializeGL(), puis toujours dans initializeGL() tu balance un timer :
connect(&qTimerFPS, SIGNAL(timeout()), this, SLOT(timerFPS()));
qTimerFPS.start(1000);
-> le slot timerFPS :
void TA_CLASSE::timerFPS()
{
//ici tu as ton nombre de FPS dans cptPaintGL
//que tu peut relancer dans un signal par exemple pour l'envoyer sur un QLabel
//puis faire cptPaintGL=0;
}

et dans paintGL() tu mets cptFPS++;
Commenter la réponse de KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Dernière intervention
2 novembre 2007
- 3 mars 2005 à 20:29
0
Merci
pardon, et dans paintGL() tu mets cptPaintGL++;

:D
Commenter la réponse de KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Dernière intervention
2 novembre 2007
- 4 mars 2005 à 10:07
0
Merci
J'ai aussi oublié de dire que dans la doc de Qt ils disent que tu peut faire un autoSwapBuffer et meme un autoRefresfh mais jamais ni l'un ni l'autre n'a marché chez moi (alors que par défaut ils disent que ces modes sont enable).
Commenter la réponse de KeniiyK

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.