#include <GL/glut.h> /* Header f. 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 */
}
void reshape(int w, int h) {
GLfloat p = (GLfloat) w / (GLfloat) h; /* Proportionalitaetsfaktor */
glViewport(0, 0, (GLsizei)w, (GLsizei)h); /* setze Viewport */
glMatrixMode(GL_PROJECTION); /* betrifft Projektionsmatrix */
glLoadIdentity(); /* lade Einheitsmatrix */
if (p > 1.0) /* falls breiter als hoch */
glFrustum( -p, p,-1.0,1.0,1.5,20.0); /* left,right,bottom,top,near,far */
else glFrustum(-1.0,1.0,-1/p,1/p,1.5,20.0); /* left,right,bottom,top,near,far */
}
void display(void){ /* Prozedur zum Zeichnen */
glClear(GL_COLOR_BUFFER_BIT); /* alle Pixel zurecksetzen */
glMatrixMode(GL_MODELVIEW); /* ab jetzt: Modellierungsmatrix */
glColor3f(1.0, 1.0, 0.0); /* Farbe gelb */
glLoadIdentity(); /* Einheitsmatrix */
gluLookAt(0.0, 0.0, 5.0, /* Kamera-Standpunkt */
0.0, 0.0, 0.0, /* Kamera-Fokussierpunkt */
0.0, 1.0, 0.0); /* Up-Vektor */
glScalef(1.0, 1.5, 1.0); /* Skalierung in 3 Dimensionen */
glRotatef(30.0, 0.0, 1.0, 0.0); /* rotiere 30 Grad um y-Achse */
glutWireCube(2.0); /* Drahtgitterwuerfel */
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(112,84); /* initiale Fensterposition */
glutCreateWindow("wire-cube-prop"); /* Fenster mit Aufschrift */
init(); /* rufe init auf */
glutDisplayFunc(display); /* registriere display */
glutReshapeFunc(reshape); /* registriere reshape */
glutMainLoop(); /* beginne Event-Schleife */
return 0; /* ISO C verlangt Rueckgabe */
}