2009-09-02 15 views

Respuesta

3

Mida el tiempo transcurrido y cuente el número de cuadros. Divide uno por el otro para obtener la velocidad de fotogramas.

Cuando el tiempo transcurrido alcanzó un segundo, o más si desea promediarlo durante un período de tiempo más largo, reinicie ambos recuentos y comience nuevamente.

+0

si estoy usando exceso y hago este llamado glutIdleFunc (oneFrame); Supongo que se llamará a oneFrame en cada fotograma ¿es correcto? – Mike2012

+0

Creo que sí, pero no estoy tan familiarizado con el exceso – jcoder

5

Stick un temporizador al inicio de su ciclo principal y prueba cuánto tiempo se tarda en volver allí.

bajo Windows que haría algo así:

double oldTime = 0.0. 
while(!exit) 
{ 
    __int64 counter; 
    QueryPerformanceCounter((LARGE_INTEGER*)&counter); 

    __int64 frequency; 
    QueryPerformanceFrequency((LARGE_INTEGER*)&frequency); 

    double newTime  = (double)counter/(double)frequency; 
    double frameRate = 1.0/(newTime - oldTime); 
    oldTime   = newTime; 

    // Rest of your game loop goes here.  
} 
+1

Lo que he dicho solo con el código actual, así que +1 (Aunque asume ventanas ...) – jcoder

+0

No es que mencionó la plataforma o el idioma ... así que es adivinar el tiempo;) – Goz