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

OpenGL Discussion :

Frame Rate


Sujet :

OpenGL

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Frame Rate
    Bonjour,

    J'aimerais connaitre les techniques pour gerer les frame rates. Quelqu'un connaitrait il une adresse pour un tutorial... J'utilise Builder 5 et un composant OpenGL, qui cree une fenetre OpenGL.

    MErci d'avance pour vos reponses...

    StarSky

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Bonjour.
    Dans ta procédure pricipale, qui dessine la scène, tu dois faire comme suis :

    Déclare les trois variables suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    float FramesParSecondes = 0;
    float FrameRate = 0;
    float LastTime = 0;
    Maintenant, dans ta procédure dessinnant la scène :
    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
    void DessinerScene()
    {
      float CurrentTime = 0; //Temps courant pour le calcul de Frames
     
      // ...
      // Ici, tu dessine ta scène
      // ...
     
      // Ensuite tu bascule le contendu des deux tampons (si nécéssaire)
      SwapBuffer( Hdc );
     
      // Voici le buffet :)
      CurrentTime = GetTickCount * 0.001;
      FramesParSecond++;
      If ( CurrentTime - LastTime > 1.0 )
      {
        LastTime = CurrentTime;
        FrameRate = FFramesPerSecond;
        FramesParSecond = 0.0;
      }
    }
     
    }

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 30
    Points
    30
    Par défaut
    Oh ça me rappelle la technique du tut sur GameTutorials.
    Si tu veux tu peux trouver ce tut ici :http://www.gametutorials.com/Tutoria...OpenGL_Pg1.htm
    A+

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 48
    Points : 46
    Points
    46
    Par défaut
    Si je me souviens bien il y a moyen d'avoir une meilleure résolution de timer avec queryPerformance() et ses homologue, c très bien expliqué sur certain forum (trouvé avec google).

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Tu as parfaitement raison Twofy, mais cette fonctions API n'est pas supportés sur toutes les machines.

    Microsoft dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If your system supports a high-resolution counter, you can use QueryPerformanceCounter and QueryPerformanceFrequency to do high-resolution timings instead GetTickCount....
    Donc QueryPerformanceCounter et QueryPerformanceFrequency sont plus rapides mais moins portables... Malgré qu'il plutôt rare de rencontrer des systèmes qui ne supportent pas ces commandes.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 48
    Points : 46
    Points
    46
    Par défaut
    Heureux de ne pas avoir dit de bétise! Mais je crois bien que le RTC de toutes les machines maintenant supporte les fonctions QueryPerformance(). Le tout est de savoir quel type d'unités renvoi le RTC, on doit étudier un registre pour voir si il s'agit de milliseconde ou de tick CPU (je sais plsu où j'ai lu ça désolé).

    Merci d'avoir confirmé, c'et ça le partage de connaissance ;o)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    Juste une précision, si tu utilises le vsync (recommandé), tes frames vont se synchroniser avec l'écran. Donc, si tu est en 85hz par ex., ne t'étonne si ton FPSmètre n'affiche jamais d'autre valeurs que 85 et 42.5, c'est que ton FPS réel (celui qui reflète les perfs de ton moteur), est qqpart entre les 2. Et si il affiche tjrs 85, il est peut être en réalité très très au dessus...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/02/2011, 16h57
  2. GLFW frame rate
    Par SpongeBob dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 14/06/2009, 22h26
  3. [WPF] Frame Rate
    Par Heroes dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 06/11/2007, 15h23
  4. Frame rate en DirectShow
    Par enenkey dans le forum DirectX
    Réponses: 3
    Dernier message: 15/12/2006, 00h31
  5. [C++] Memcpy ralentit le frame rate
    Par LAPLACE dans le forum C++
    Réponses: 8
    Dernier message: 16/05/2006, 18h24

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