better fps computation
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 12 Sep 2000 17:38:22 +0000 (17:38 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 12 Sep 2000 17:38:22 +0000 (17:38 +0000)
progs/demos/tunnel.c

index 98484ee68da5ffc3f4ec5d176f15d67a242b1c28..10d9a540b7e02b581340a5eee60168f4d6d72da4 100644 (file)
@@ -27,7 +27,8 @@ static int fullscreen = 1;
 static int WIDTH = 640;
 static int HEIGHT = 480;
 
-#define FRAME 50
+static GLint T0 = 0;
+static GLint Frames = 0;
 
 #define NUMBLOC 5
 
@@ -366,8 +367,7 @@ dojoy(void)
 static void
 draw(void)
 {
-   static int count = 0;
-   static char frbuf[80];
+   static char frbuf[80] = "";
    int i;
    float fr, base, offset;
 
@@ -416,11 +416,6 @@ draw(void)
    glPopMatrix();
    glPopMatrix();
 
-   if ((count % FRAME) == 0) {
-      fr = gettime();
-      sprintf(frbuf, "Frame rate: %f", FRAME / fr);
-   }
-
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_FOG);
    glShadeModel(GL_FLAT);
@@ -449,7 +444,18 @@ draw(void)
 
    glutSwapBuffers();
 
-   count++;
+   Frames++;
+
+   {
+      GLint t = glutGet(GLUT_ELAPSED_TIME);
+      if (t - T0 >= 2000) {
+         GLfloat seconds = (t - T0) / 1000.0;
+         GLfloat fps = Frames / seconds;
+         sprintf(frbuf, "Frame rate: %f", fps);
+         T0 = t;
+         Frames = 0;
+      }
+   }
 }
 
 int