diff options
Diffstat (limited to 'src/glut/glx/glut_swap.c')
-rw-r--r-- | src/glut/glx/glut_swap.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/glut/glx/glut_swap.c b/src/glut/glx/glut_swap.c index 0864e58d429..cb3f653c72c 100644 --- a/src/glut/glx/glut_swap.c +++ b/src/glut/glx/glut_swap.c @@ -5,8 +5,13 @@ and is provided without guarantee or warrantee expressed or implied. This program is -not- in the public domain. */ +#include <stdio.h> #include "glutint.h" +GLint __glutFPS = 0; +GLint __glutSwapCount = 0; +GLint __glutSwapTime = 0; + /* CENTRY */ void APIENTRY glutSwapBuffers(void) @@ -43,5 +48,20 @@ glutSwapBuffers(void) glutPostRedisplay to trigger redraws. If glutPostRedisplay were used, __glutSetWindow would be called and a glFinish to throttle buffering would occur. */ + + if (__glutFPS) { + GLint t = glutGet(GLUT_ELAPSED_TIME); + __glutSwapCount++; + if (__glutSwapTime == 0) + __glutSwapTime = t; + else if (t - __glutSwapTime > __glutFPS) { + float time = 0.001 * (t - __glutSwapTime); + float fps = (float) __glutSwapCount / time; + fprintf(stderr, "GLUT: %d frames in %.2f seconds = %.2f FPS\n", + __glutSwapCount, time, fps); + __glutSwapTime = t; + __glutSwapCount = 0; + } + } } /* ENDCENTRY */ |