Why is the display function called twice?

In the below OpenGL code used for initialization and for main function, why is the display function called twice? I don't see the call to be made except glutDisplayFunc(display)

;

void init(void)
{
   glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black and opaque
   glClearDepth(1.0f);                   // Set background depth to farthest
   glEnable(GL_DEPTH_TEST);   // Enable depth testing for z-culling
   glEnable(GL_POINT_SMOOTH);
   glDepthFunc(GL_LEQUAL);    // Set the type of depth-test
   glShadeModel(GL_SMOOTH);   // Enable smooth shading
   gluLookAt(0.0, 0.0, -5.0,  /* eye is at (0,0,5) */
             0.0, 0.0, 0.0,      /* center is at (0,0,0) */
             0.0, 1.0, 0.0);      /* up is in positive Y direction */

   glOrtho(-5,5,-5,5,12,15); 
  //glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);  // Nice perspective corrections

}

int
main(int argc, char **argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  glutCreateWindow("red 3D lighted cube");
  glutInitWindowSize(1280,800 );   // Set the window initial width & height
  //glutInitWindowPosition(50, 50); // Position the window initial top-left corner    
  //glutReshapeWindow(800,800);
  init();
  compute();
  glutDisplayFunc(display);

  glutMainLoop();
  return 0;             /* ANSI C requires main to return int. */
}

      

+3


source to share


1 answer


The callback display()

is called whenever GLUT decides if the application (what you are) wants to redraw the contents of the window.

It is possible that some events occur when the window is opened, causing the need to redraw the window.



You don't have to "care"; just make sure you redraw the content in the function display()

and never mind how many times it calls.

+6


source







All Articles