From f2582ac6c7d21fb7f96818f7c4f21d14f43cfa4d Mon Sep 17 00:00:00 2001 From: John Tsiombikas Date: Sat, 10 Mar 2012 14:55:50 +0000 Subject: [PATCH] added the timer demo git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1100 7f0cb862-5218-0410-a997-914c9d46530a --- CMakeLists.txt | 3 +-- progs/demos/timer/timer.c | 53 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 progs/demos/timer/timer.c diff --git a/CMakeLists.txt b/CMakeLists.txt index e1ac133..c39f2be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 index 0000000..d9bd89b --- /dev/null +++ b/progs/demos/timer/timer.c @@ -0,0 +1,53 @@ +/* Timer demo + * + * Written by John Tsiombikas + * + * Demonstrate the use of glutTimerFunc, by changing the color of the + * framebuffer every (approximately) 1 sec. + */ +#include +#include + +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(); +} -- 1.7.10.4