summaryrefslogtreecommitdiffstats
path: root/src/glut/glx/glut_swap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glut/glx/glut_swap.c')
-rw-r--r--src/glut/glx/glut_swap.c20
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 */