title: What does glutTimerFunc() actually do?
body: <p>If I run the following loop as part of my OpenGL program:</p>
  
  <pre><code>void Loop(int state)
  {
      glutPostRedisplay();
      glutTimerFunc(1, Loop, 0);
  }
  </code></pre>
  
  <p>Then, my program runs fine, and I am able to move the camera around the scene by dragging my mouse.</p>
  
  <p>However, if I use this loop:</p>
  
  <pre><code>void Loop(int state)
  {
      glutPostRedisplay();
      Loop();
  }
  </code></pre>
  
  <p>I am not able to move around the scene with my mouse. The loop is being called, but it is just not processing any mouse or keyboard inputs.</p>
  
  <p>I don't understand why this is. The only difference is that in the first example, a timer function is used to call <code>Loop()</code>, whereas in the second example, <code>Loop()</code> is called explicitly, without any delay.</p>
  
  <p>So what is it that <code>glutTimerFunc()</code> is actually doing, besides calling <code>Loop()</code>?</p>