/*
    firstglut.c

    - Einfachstes GL-Programm mit der Glut-Library.
    - Erzeugt ein Fenster und löscht die Fensterfläche.
    - Programm-Ende durch Drücken einer Taste.

    Übungen und Anregungen:
    (Tip: Notizen und Antworten gleich hier hinter die Fragen schreiben.)

    > Wie erzeugt man eine rote, eine gelbe,... Hintergrundfläche?

    > Was bedeuten die Positionsangaben in glutInitWindowPosition()?

    > Tut die Funktion glutFullScreen() das Erwartete,
      wenn sie aus den Kommentarzeichen befreit wird?

    > Unter welchen Umständen wird display_func() aufgerufen?
      (Ausprobieren: Verschieben, vergrößern, verdecken... des Fensters)

    > Was passiert, wenn man die einzelnen GL-Funktionen
      aus display_func() entfernt? (Entfernen am besten mittels
      Kommentar-Zeichen, damit die Funktionen anschließend
      leicht wieder "da" sind.)

    > Was passiert, wenn man die display_func() aus dem Programm entfernt?
*/



# include       <stdio.h>
# include       <stdlib.h>
# include       <GL/gl.h>
# include       <GL/glut.h>



static void     display_func (void)
/*********************************/
{
    printf ("display_func()\n");

    glClearColor (1, 1, 1, 0);
    glClear (GL_COLOR_BUFFER_BIT);
    glFlush ();
}



static void     keyboard_func (unsigned char key, int x, int y)
/*************************************************************/
{
    printf ("keyboard_func (key='%c', x=%d, y=%d)\n", key, x, y);
    exit (0);
}



extern int      main (int argc, char **argv)
/******************************************/
{
    glutInit (&argc, argv);
    glutInitDisplayMode (GLUT_RGB);

    glutInitWindowPosition (200, 100);
    glutInitWindowSize (400, 400);
    glutCreateWindow ("firstglut");
    /* glutFullScreen (); */

    glutDisplayFunc (display_func);
    glutKeyboardFunc (keyboard_func);

    glutMainLoop ();

    return 0;
}

