QT OpenGL FPS [Résolu]

Signaler
Messages postés
28
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
2 septembre 2005
-
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
-
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
A voir également:

8 réponses

Messages postés
28
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
2 septembre 2005

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
Messages postés
2
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
25 février 2005

dsl sur le calcule et pas calcul
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
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
Messages postés
28
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
2 septembre 2005

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
Messages postés
28
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
2 septembre 2005

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 :(
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
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++;
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
pardon, et dans paintGL() tu mets cptPaintGL++;

:D
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
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).