#include <GL/glut.h> /* Header fuer OpenGl utility toolkit */
#include <stdlib.h> /* Header fuer C-Library */
GLfloat g=0.0; /* globale Variable */
void init(void) { /* Initialisierung */
glClearColor(0.5, 0.5, 0.5, 0.0); /* setze Grau als Hintergrundfarbe */
glMatrixMode(GL_PROJECTION); /* betrifft Projektionsmatrix */
glLoadIdentity(); /* beginne mit Einheitsmatrix */
gluOrtho2D(0.0, 1.5, 0.0, 1.0); /* Orthogonalprojektions-Clip-Ebenen */
} /* in 2D: left,right, bottom, top */
void display(void){ /* Prozedur zum Zeichnen */
glClear(GL_COLOR_BUFFER_BIT); /* alle Pixel zurecksetzen */
glColor3f(1.0,g,0.0); /* Farbe gemaess RGB-Tripel */
glBegin(GL_TRIANGLES); /* Beginn eines Dreiecks */
glVertex2f(0.25, 0.25); /* links unten */
glVertex2f(0.75, 0.25); /* rechts unten */
glVertex2f(0.25, 0.75); /* links oben */
glEnd(); /* Ende des Dreiecks */
glFlush(); /* direkt ausgeben */
}
void mouse(int button,int state,int x,int y){/* Maus-Klick bei Koordinate x,y */
switch(button) { /* analysiere den Mausevent */
case GLUT_LEFT_BUTTON: /* falls linke Taste gedrueckt */
if (state==GLUT_DOWN) g=1.0; /* setzte Gruenanteil auf 1 */
break;
case GLUT_RIGHT_BUTTON: /* falls rechte Taste gedrueckt */
if (state==GLUT_DOWN) g=0.0; /* setzte Gruenanteil auf 0 */
break;
} glutPostRedisplay(); /* durchlaufe display erneut */
}
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("click"); /* Fenster mit Aufschrift */
init(); /* rufe init auf */
glutDisplayFunc(display); /* registriere display */
glutMouseFunc(mouse); /* registriere mouse */
glutMainLoop(); /* beginne Event-Schleife */
return 0; /* ISO C verlangt Rueckgabe */
}