better FPS calculation
diff --git a/progs/demos/teapot.c b/progs/demos/teapot.c
index c36865f..4769139 100644
--- a/progs/demos/teapot.c
+++ b/progs/demos/teapot.c
@@ -27,7 +27,8 @@
static int WIDTH=640;
static int HEIGHT=480;
-#define FRAME 50
+static GLint T0 = 0;
+static GLint Frames = 0;
#define BASESIZE 10.0
@@ -65,20 +66,6 @@
static GLuint t1id,t2id;
static GLuint teapotdlist,basedlist,lightdlist;
-static float gettime(void)
-{
- static clock_t told=0;
- clock_t tnew,ris;
-
- tnew=clock();
-
- ris=tnew-told;
-
- told=tnew;
-
- return(ris/(float)CLOCKS_PER_SEC);
-}
-
static void calcposobs(void)
{
dir[0]=sin(alpha*M_PI/180.0);
@@ -339,9 +326,7 @@
static void draw(void)
{
- static int count=0;
- static char frbuf[80];
- float fr;
+ static char frbuf[80] = "";
dojoy();
@@ -375,11 +360,6 @@
drawlight2();
glPopMatrix();
- if((count % FRAME)==0) {
- fr=gettime();
- sprintf(frbuf,"Frame rate: %f",FRAME/fr);
- }
-
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
@@ -405,7 +385,18 @@
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;
+ }
+ }
}
static void inittextures(void)