X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=progs%2Fdemos%2Ftimer%2Ftimer.c;h=44fa76c0a6434163a4dcea3f5682faa9d0a37f22;hb=56cc35535901ef071bf8acab59ba176355ee3e0e;hp=d9bd89b2655ea8ad45ec9eaa636649bc964858c3;hpb=f2582ac6c7d21fb7f96818f7c4f21d14f43cfa4d;p=freeglut diff --git a/progs/demos/timer/timer.c b/progs/demos/timer/timer.c index d9bd89b..44fa76c 100644 --- a/progs/demos/timer/timer.c +++ b/progs/demos/timer/timer.c @@ -12,7 +12,8 @@ void disp(void); void timer_func(int unused); /* color index will be advanced every time the timer expires */ -int cidx; +int cidx = 0; +int pcidx = 2; float color[][3] = { {1, 0, 0}, {0, 1, 0}, @@ -31,6 +32,10 @@ int main(int argc, char **argv) glutDisplayFunc(disp); + /* get timer started, its reset in the timer function itself */ + glutTimerFunc(1000, timer_func, 1); + glutTimerFunc(500, timer_func, 2); + glutMainLoop(); return 0; } @@ -40,14 +45,30 @@ 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); + glPointSize(10.f); + glColor3f(color[pcidx][0], color[pcidx][1], color[pcidx][2]); + glBegin(GL_POINTS); + glVertex2i(0,0); + glEnd(); + glutSwapBuffers(); } -void timer_func(int unused) +void timer_func(int which) { /* advance the color index and trigger a redisplay */ - cidx = (cidx + 1) % (sizeof color / sizeof *color); + switch (which) + { + case 1: + cidx = (cidx + 1) % (sizeof color / sizeof *color); + break; + case 2: + pcidx = (pcidx + 1) % (sizeof color / sizeof *color); + break; + } + glutPostRedisplay(); + + /* (re)set the timer callback and ask glut to call it in 1 second */ + glutTimerFunc(1000, timer_func, which); }