示例#1
0
/**
 * Timer-Callback
 * Initializes the timer and calls the redisplay of the scene.
 */
void cbTimer (int lastCallTime)
{
    /* Time since program start. */
    int thisCallTime = glutGet (GLUT_ELAPSED_TIME);

    /* Time since last call */
    double interval = (double) (thisCallTime - lastCallTime) / 1000.0f;

    calcTimeRelatedStuff(interval);

    /* Register itself as timer for the next time */
    glutTimerFunc (1000 / TIMER_CALLS_PS, cbTimer, thisCallTime);

    /* Re-display */
    glutPostRedisplay ();
}
/**
 * Timer-Callback.
 * Initiiert Berechnung der aktuellen Position und Farben und anschliessendes
 * Neuzeichnen, setzt sich selbst erneut als Timer-Callback.
 * @param lastCallTime Zeitpunkt, zu dem die Funktion als Timer-Funktion
 *   registriert wurde (In).
 */
static void
cbTimer (int lastCallTime)
{
    /* Seit dem Programmstart vergangene Zeit in Millisekunden */
    int thisCallTime = glutGet (GLUT_ELAPSED_TIME);

    /* Seit dem letzten Funktionsaufruf vergangene Zeit in Sekunden */
    double interval = (double) (thisCallTime - lastCallTime) / 1000.0f;

    calcTimeRelatedStuff(interval);

    /* Wieder als Timer-Funktion registrieren */
    glutTimerFunc (1000 / TIMER_CALLS_PS, cbTimer, thisCallTime);

    /* Neuzeichnen anstossen */
    glutPostRedisplay ();

}