added the timer demo
authorJohn Tsiombikas <nuclear@member.fsf.org>
Sat, 10 Mar 2012 14:55:50 +0000 (14:55 +0000)
committerJohn Tsiombikas <nuclear@member.fsf.org>
Sat, 10 Mar 2012 14:55:50 +0000 (14:55 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1100 7f0cb862-5218-0410-a997-914c9d46530a

CMakeLists.txt
progs/demos/timer/timer.c [new file with mode: 0644]

index e1ac133..c39f2be 100644 (file)
@@ -219,5 +219,4 @@ ADD_DEMO(spaceball       progs/demos/spaceball/spaceball.c
                          progs/demos/spaceball/vmath.c
                          progs/demos/spaceball/vmath.h)
 ADD_DEMO(subwin          progs/demos/subwin/subwin.c)
-
-
+ADD_DEMO(timer           progs/demos/timer/timer.c)
diff --git a/progs/demos/timer/timer.c b/progs/demos/timer/timer.c
new file mode 100644 (file)
index 0000000..d9bd89b
--- /dev/null
@@ -0,0 +1,53 @@
+/* Timer demo
+ *
+ * Written by John Tsiombikas <nuclear@member.fsf.org>
+ *
+ * Demonstrate the use of glutTimerFunc, by changing the color of the
+ * framebuffer every (approximately) 1 sec.
+ */
+#include <stdio.h>
+#include <GL/glut.h>
+
+void disp(void);
+void timer_func(int unused);
+
+/* color index will be advanced every time the timer expires */
+int cidx;
+float color[][3] = {
+       {1, 0, 0},
+       {0, 1, 0},
+       {0, 0, 1},
+       {1, 1, 0},
+       {0, 1, 1},
+       {1, 0, 1}
+};
+
+int main(int argc, char **argv)
+{
+       glutInit(&argc, argv);
+       glutInitWindowSize(128, 128);
+       glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
+       glutCreateWindow("timer test");
+
+       glutDisplayFunc(disp);
+
+       glutMainLoop();
+       return 0;
+}
+
+void disp(void)
+{
+       glClearColor(color[cidx][0], color[cidx][1], color[cidx][2], 1);
+       glClear(GL_COLOR_BUFFER_BIT);
+
+       /* set the timer callback and ask glut to call it in 1 second */
+       glutTimerFunc(1000, timer_func, 0);
+       glutSwapBuffers();
+}
+
+void timer_func(int unused)
+{
+       /* advance the color index and trigger a redisplay */
+       cidx = (cidx + 1) % (sizeof color / sizeof *color);
+       glutPostRedisplay();
+}