#include <GL/glut.h>                         /* Header fuer OpenGl utility toolkit */
#include <stdlib.h>                          /* Header fuer C-Library              */

void init(void) {                            /* Initialisierung                    */
  glClearColor(0.0, 0.0, 1.0, 0.0);          /* setze Blau als Hintergrundfarbe    */
  glMatrixMode(GL_PROJECTION);               /* betrifft Projektionsmatrix         */
  glLoadIdentity();                          /* beginne mit Einheitsmatrix         */
  gluOrtho2D(0.0, 4.0, 0.0, 3.0);            /* Orthogonalprojektions-Clip-Ebenen  */
}                                            /* in 2D: left,right,bottom,top       */

void display(void){                          /* Prozedur zum Zeichnen              */
  glClear(GL_COLOR_BUFFER_BIT);              /* alle Pixel zurecksetzen            */
  glMatrixMode(GL_MODELVIEW);                /* betrifft Modelview-Matrix          */
  glLoadIdentity();                          /* beginne mit Einheitsmatrix         */
  glRotatef(45,0.0,0.0,1.0);                 /* drehe 45 Grad bzgl. der z-Achse    */
  glTranslatef(1.0, 0.0, 0.0);               /* verschiebe eine Einheit nach rechts*/
  glColor3f(1.0, 0.0, 0.0);                  /* Farbe rot                          */ 
  glBegin(GL_POLYGON);                       /* Beginn eines Polygons              */
    glVertex2f(0.25, 0.25);                  /* links unten                        */
    glVertex2f(0.75, 0.25);                  /* rechts unten                       */
    glVertex2f(0.75, 0.75);                  /* rechts oben                        */
    glVertex2f(0.25, 0.75);                  /* links oben                         */
  glEnd();                                   /* Ende des Polygons                  */
  glFlush();                                 /* direkt ausgeben                    */
}

int main (int argc, char ** argv) {          /* Hauptprogramm                      */
  glutInit(&argc, argv);                     /* initialisiere GLUT                 */
  glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /* single buffer, true color          */
  glutInitWindowSize(800, 600);              /* initiale Fenstergroesse            */
  glutInitWindowPosition(0,0);               /* initiale Fensterposition           */
  glutCreateWindow("hello");                 /* Fenster mit Aufschrift             */
  init();                                    /* rufe init auf                      */
  glutDisplayFunc(display);                  /* registriere display                */
  glutMainLoop();                            /* beginne Event-Schleife             */
  return 0;                                  /* ISO C verlangt Rueckgabe           */
}