274 Introduction to C++ Programming and Graphics
}//--- Draw a circle:void drawCircle()
{
glBegin(GLLINELOOP);
for (int i=0; i <= N; i++)
{
float angle = i*Dtheta;
glVertex2f(cos(angle)*radius,sin(angle)*radius);
}
glEnd();
}In this method, animation is performed using theglutIdleFunccallback. The
code features the following implementations:
- Double buffering is ensured by includingGLUTDOUBLEin the argument of
glutInitDisplayMode. - It is mandatory to clear the depth buffer, otherwise the rendering will fail.
- TheglutSwapBuffersfunction swaps the buffers.
A snapshot of the animation is shown in Figure 8.2.1(a).
(a)(b)Figure 8.2.1 Snapshot of (a) a rotating circle, and (b)abouncingdisk.