timer

hi there, i have created a circle using glBegin(GL_LINES);
for(i=0;i<360;i++)…etc

i have the circle up there. i want to animate it so i changes colors, eg, red then to blue then to yellow etc. im aware that you need a timer function for this. im so lost, can anyone offer a helping hand?

You may measure the elapsed time and update the colour based on the elapsed time, for example switching colour every 1 sec.

ANSI C defines clock() fuction to return the elapsed clocks since CPU is started.

To measure the elapsed time in second;

clock_t clockStart = clock();
...
// get elapsed time
float elapsedTime = (float)(clock() - clockStart) / CLOCKS_PER_SEC;

However, clock() is not so accurate, probably about 10 ms resolution.

To get higher resolution (at least 1 micro second accuracy), you can use gettimeofday() in Unix and Linux, Or QueryPerformanceCounter() in Windows.

Also, GLUT provides timer callback mechanism, too: glutTimerFunc().