Understanding the relationship between glutDisplayFunc and glutPostRedisplay

glutopengl

When reading the redbook I found:

glutDisplayFunc(void (*func)(void)) is
the first and most important event
callback function you will see.
Whenever GLUT determines that the
contents of the window need to be
redisplayed, the callback function
registered by glutDisplayFunc() is
executed. Therefore, you should put
all the routines you need to redraw
the scene in the display callback
function.

If your program changes the contents
of the window, sometimes you will have
to call glutPostRedisplay(), which
gives glutMainLoop() a nudge to call
the registered display callback at its
next opportunity

Which are times in which glutPostRedisplay() should be called? From this paragraph, I don't understand why its functionality is needed.

Best Answer

glutDisplayFunc is called whenever your window must be redrawn. This includes the time when one calls glutPostRedisplay :)

When does a window need to be redrawn?

  • When its size changes
  • when it becomes visible
  • when some parts of it become visible
  • when it is moved
  • etc

But what if your display function paints a triangle at position x;y where x;y; are determined by the mouse position? In this case you must ask the system to redraw the window whenever the mouse is moved right? That's why you'll call glutPostRedisplay from MouseFunc(). Actually when you call glutPostRedisplay, the redraw event is queued along with other window-events, like mouse click ets. Essentially what your mainLoop does it pick events from that queue and call their handlers

Related Topic