QT OpenGL FPS

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

8 réponses

xabila Messages postés 28 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 2 septembre 2005
4 mars 2005 à 09:00
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
3
xabilala Messages postés 2 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 25 février 2005
25 févr. 2005 à 14:45
dsl sur le calcule et pas calcul
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
26 févr. 2005 à 10:29
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
0
xabila Messages postés 28 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 2 septembre 2005
26 févr. 2005 à 12:05
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
0

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

Posez votre question
xabila Messages postés 28 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 2 septembre 2005
26 févr. 2005 à 17:07
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 :(
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
3 mars 2005 à 20:28
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++;
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
3 mars 2005 à 20:29
pardon, et dans paintGL() tu mets cptPaintGL++;

:D
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
4 mars 2005 à 10:07
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).
0
Rejoignez-nous