#include "glut.h" #include int version = 1; void myDisplay() { glClear ( GL_COLOR_BUFFER_BIT ); if (version != 1) { glColor3f(1.0, 1.0, 1.0); } glBegin( GL_POLYGON ); glVertex2f( -0.5, -0.5 ); glVertex2f( -0.5, 0.5 ); glVertex2f( 0.5, 0.5 ); glVertex2f( 0.5, -0.5 ); glEnd(); glColor3f(1.0, 0.0, 0.0); glPointSize(4.0); glBegin( GL_POINTS ); glVertex2f( -0.9, -0.8 ); glVertex2f( -0.7, -0.4 ); glVertex2f( -0.5, -0.2 ); glVertex2f( -0.3, -0.1 ); glVertex2f( -0.1, 0); glVertex2f( 0.0, 0); glVertex2f( 0.1, 0); glVertex2f( 0.3, -0.1 ); glVertex2f( 0.5, -0.2 ); glVertex2f( 0.7, -0.4 ); glVertex2f( 0.9, -0.8 ); glEnd(); glColor3f(0.0, 1.0, 0.0); glBegin( GL_LINE_STRIP ); glVertex2f( -0.9, -0.8 ); glVertex2f( -0.7, -0.4 ); glVertex2f( -0.5, -0.2 ); glVertex2f( -0.3, -0.1 ); glVertex2f( -0.1, 0); glVertex2f( 0.0, 0); glVertex2f( 0.1, 0); glVertex2f( 0.3, -0.1 ); glVertex2f( 0.5, -0.2 ); glVertex2f( 0.7, -0.4 ); glVertex2f( 0.9, -0.8 ); glEnd(); if (version == 3) { glClearColor(0.0, 1.0, 0.0, 0.0); glColor3f(1.0, 0.0, 1.0); glEnable(GL_LINE_STIPPLE); glLineStipple(1, 0x6666); glBegin( GL_LINE_LOOP ); glVertex2f( -0.9, -0.8 ); glVertex2f( -0.7, -0.4 ); glVertex2f( -0.5, -0.2 ); glVertex2f( -0.3, -0.1 ); glVertex2f( -0.1, 0); glVertex2f( 0.0, 0); glVertex2f( 0.1, 0); glVertex2f( 0.3, -0.1 ); glVertex2f( 0.5, -0.2 ); glVertex2f( 0.7, -0.4 ); glVertex2f( 0.9, -0.8 ); glEnd(); } // end if glFlush(); } // end of myDisplay() void myInit() { glClearColor(0.0, 0.0, 0.0, 1.0); glColor3f(1.0, 1.0, 1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); } // end of myInit() int main ( int argc, char** argv ) { if (argc < 2 || strcmp(argv[1], "colorfix")) if (argc < 2 || strcmp(argv[1], "loop")) version = 1; else version = 3; else version = 2; glutInit( &argc, argv ); glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE ); glutInitWindowSize(500, 500); glutInitWindowPosition(0, 200); glutCreateWindow ( "simple demo program" ); /* register callback functions */ glutDisplayFunc( myDisplay ); /* set up initial state, and let's go! */ myInit(); glutMainLoop(); return 0; } // end of main()