#include <GL/gl.h> #include <GL/glu.h> #include "aux.h" void draw_triangle(void) { glBegin(GL_LINE_LOOP); glVertex2f(0.0, 25.0); glVertex2f(25.0, -25.0); glVertex2f(-25.0, -25.0); glEnd(); } void display_co_1(void) { glLoadIdentity (); glColor3f (1.0, 1.0, 1.0); draw_triangle (); } void display_co_2(void) { glEnable (GL_LINE_STIPPLE); glLineStipple (1, 0xF0F0); glLoadIdentity (); glTranslatef (-20.0, 0.0, 0.0); draw_triangle (); glDisable (GL_LINE_STIPPLE); } void display_co_3(void) { glEnable (GL_LINE_STIPPLE); glLineStipple (1, 0xF00F); glLoadIdentity (); glScalef (1.5, 0.5, 1.0); draw_triangle (); glDisable (GL_LINE_STIPPLE); } void display_co_4(void) { glEnable (GL_LINE_STIPPLE); glLineStipple (1, 0x8888); glLoadIdentity (); glRotatef (90.0, 0.0, 0.0, 1.0); draw_triangle (); glDisable (GL_LINE_STIPPLE); } void myReshape(); int winWidth=500,winHeight=500; void display(void) { myReshape(winWidth, winHeight); } void myinit (void) { glShadeModel (GL_FLAT); } void myReshape(int w, int h) { winWidth=w; winHeight=h; glClearColor (0.0, 0.0, 0.0, 1.0); glClear (GL_COLOR_BUFFER_BIT); glMatrixMode(GL_PROJECTION); /* nur einmal */ glLoadIdentity(); if (w <= h) glOrtho (-50.0, 50.0, -50.0*(GLfloat)h/(GLfloat)w, 50.0*(GLfloat)h/(GLfloat)w, -1.0, 1.0); else glOrtho (-50.0*(GLfloat)w/(GLfloat)h, 50.0*(GLfloat)w/(GLfloat)h, -50.0, 50.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glViewport(0, 0, w/2, h/2); display_co_1(); glViewport(w/2, h/2, w, h); display_co_2(); glViewport(0, h/2, w/2, h); display_co_3(); glViewport(w/2, 0, w, h/2); display_co_4(); glFinish(); } int main(int argc, char** argv) { auxInitDisplayMode (AUX_SINGLE | AUX_RGB); auxInitPosition (0, 0, winWidth, winHeight); auxInitWindow (argv[0]); myinit (); auxReshapeFunc (myReshape); auxMainLoop(display); }