QT OpenGL FPS [Résolu]

xabila 28 Messages postés lundi 14 février 2005Date d'inscription 2 septembre 2005 Dernière intervention - 25 févr. 2005 à 13:32 - Dernière réponse : KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention
- 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 

8 réponses

Répondre au sujet
xabila 28 Messages postés lundi 14 février 2005Date d'inscription 2 septembre 2005 Dernière intervention - 4 mars 2005 à 09:00
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de xabila
xabilala 2 Messages postés lundi 14 février 2005Date d'inscription 25 février 2005 Dernière intervention - 25 févr. 2005 à 14:45
0
Utile
dsl sur le calcule et pas calcul
Commenter la réponse de xabilala
Arnaud16022 1329 Messages postés vendredi 15 août 2003Date d'inscription 16 juin 2010 Dernière intervention - 26 févr. 2005 à 10:29
0
Utile
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
xabila 28 Messages postés lundi 14 février 2005Date d'inscription 2 septembre 2005 Dernière intervention - 26 févr. 2005 à 12:05
0
Utile
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
xabila 28 Messages postés lundi 14 février 2005Date d'inscription 2 septembre 2005 Dernière intervention - 26 févr. 2005 à 17:07
0
Utile
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
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 3 mars 2005 à 20:28
0
Utile
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
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 3 mars 2005 à 20:29
0
Utile
pardon, et dans paintGL() tu mets cptPaintGL++;

:D
Commenter la réponse de KeniiyK
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 4 mars 2005 à 10:07
0
Utile
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.