IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC]Calculer les FPS


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 4
    Par d�faut [MFC]Calculer les FPS
    salut j'aimerais calculer les Frames/secondes de mon appli MFC (rendu 3D openGL).

    or la situation n'est pas la m�me que dans un moteur 3D ou tout est g�rer par une boucle principale. Apparement, en MFC, si un �venement genre "la souris a boug�" ou "une fen�tre a �t� d�plac�" la zone graphique n'est pas redessin�e. or j'ai besoins de conna�tre le nombre de fois ou la fen�tre est redessiner.

    une piste, une info ?

    Inerti@

  2. #2
    mat.M
    Invit�(e)
    Par d�faut
    salut j'aimerais calculer les Frames/secondes de mon appli MFC
    Il faut calculer l'intervalle de temps et le nbre de frames/sec sera ( comme �a le laisse supposer ) le nombre d'images rendues dans la boucle de rendu par seconde , localis�e dans la proc�dure de fen�tre et hors traitement messages ( c.a.d. le Thread principal de fen�tre qui boucle tout le temps )
    On peut utiliser GetTickCount ( inclure winmm.lib ) ou les classes CTime , CTimeSPan

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 4
    Par d�faut
    localis�e dans la proc�dure de fen�tre et hors traitement messages
    comprend pas trop

    tu veux dire que je lance simplement une boucle dans la fonction appel�e par CVue:raw() et je fait mon calcul o� faut comprendre autre chose ?

    Inerti@

  4. #4
    mat.M
    Invit�(e)
    Par d�faut
    Oui il faut calculer les frames dans ll'�v�n�ment OnDraw , ou bien tout simplement d�finir un timer fix� � 1000 ms et effectuer le calcul
    Prendre exemple sur Cube du MSDN qui utilise le rendu Open GL
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    void CCubeView::OnTimer(UINT nIDEvent)
    {
    	DrawScene();
     
    	CView::OnTimer(nIDEvent);
     
    	// Eat spurious WM_TIMER messages
    	MSG msg;
    	while(::PeekMessage(&msg, m_hWnd, WM_TIMER, WM_TIMER, PM_REMOVE));
    }
     
     
    void CCubeView::OnDraw(CDC* pDC)
    {
    	CCubeDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
     
    	DrawScene();
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 4
    Par d�faut
    la fonction qui calcul les frames/seconde est au point.
    elle fonctionne elle est valid�.


    mon dernier probl�me est le suivant.

    j'aimerais savoir si dans les MFC il y a une sorte de fonction Idle comme openGL, c'est a dire fonction qui indique � l'application ce quelle doit faire lorsque qu'il n'y a aucun action de l'utilisateur, etc ...


    j'ai essayer avec un timer comme dans la demo cube du msdn mais c'est pas bon j'obtient un certain framerate et si je bouge la souris mon framerate augmente, bref c'est pas tr�s fiable.

    j'ai mis dans le menu de l'appli un menu � cocher "benchmark" qui active/desactive un bool�en. Je dois simplement lancer en boucle le rendu de la sc�ne 3D tant que ce bool�en est vrai mais je gal�re, je ne sais pas quelle �v�nement utiliser

    inerti@

  6. #6
    mat.M
    Invit�(e)
    Par d�faut
    Il y a CWinApp::OnIdle , voil� un exemple du MSDN :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    BOOL CMyApp::OnIdle(LONG lCount)
    {
        BOOL bMore = CWinApp::OnIdle(lCount);
     
        if (lCount == 0)
        {
        TRACE("App idle for short period of time\n");
        bMore = TRUE;
        }
        else if (lCount == 10)
        {
        TRACE("App idle for longer amount of time\n");
            bMore = TRUE;
        }
        else if (lCount == 100)
        {
            TRACE("App idle for even longer amount of time\n");
            bMore = TRUE;
        }
        else if (lCount == 1000)
        {
            TRACE("App idle for quite a long period of time\n");
         // bMore is not set to TRUE, no longer need idle
         // IMPORTANT: bMore is not set to FALSE since CWinApp::OnIdle may
         // have more idle tasks to complete.
        }
     
        return bMore;
         // return TRUE as long as there is any more idle tasks
    }

    Je dois simplement lancer en boucle le rendu de la sc�ne 3D tant que ce bool�en est vrai mais je gal�re, je ne sais pas quelle �v�nement utiliser
    Pour cela utilise le timer ou OnIDle comme indiqu� pr�c�demment , non ??

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 4
    Par d�faut
    oui mais le timer on doit lui donner un delai d'�x�cution ce qui ne m'arrange pas car je dois lancer en continue mon calcul.

    Je vais creuser cette m�thode Idle

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MFC] Controler les splitter
    Par toune dans le forum MFC
    R�ponses: 6
    Dernier message: 19/01/2005, 12h20
  2. [MFC] Interc�pter les erreurs (WinInet)
    Par Kevgeii dans le forum MFC
    R�ponses: 3
    Dernier message: 05/11/2004, 08h39
  3. Afficher les FPS
    Par p@rasiT dans le forum OpenGL
    R�ponses: 5
    Dernier message: 04/10/2004, 14h15
  4. [MFC] d�vier les messages de MESSAGE_MAP
    Par mychawel dans le forum MFC
    R�ponses: 3
    Dernier message: 12/07/2004, 14h05
  5. R�ponses: 6
    Dernier message: 04/01/2004, 20h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo