** File: star2.c ** Description: Renders the outline of a star. ** Demonstrates setting up the abstract ** world coordinates and the physical viewport. ** Rev: 1.0 ** Created: 06 August 2002 ** Last Update: 08 August 2002 ** Author: Fran Soddell ** Email: F.Soddell@bendigo.latrobe.edu.au */ #include &amp;lt;GL/glut.h&amp;gt; /* ** window and viewport management */ int width=300; int height=300; int xPosition=50; int yPosition=50; int xOrigin=0; int yOrigin=0; /* ** world coordinate management */ GLdouble xLeft=0.0; GLdouble xRight=4.0; GLdouble yBottom=0.0; GLdouble yTop=4.0; /* ** colour management */ #define NUM_COLOURS 9 #define ALPHA 1.0 enum {black, red,green,blue,yellow,magenta,cyan, orange,white }; typedef GLdouble colourType[3]; colourType colour[]={ {0.0,0.0,0.0}, {1.0,0.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0}, {1.0,1.0,0.0},{1.0,0.0,1.0},{0.0,1.0,1.0}, {1.0,0.35,0.0},{1.0,1.0,1.0} }; int current = orange; /* ** model management */ enum {x,y}; typedef GLdouble vertexType [2]; int starSize=10; vertexType star[]={ {0.8,0.1},{1.95,1.1},{3.2,0.4}, {2.6,1.9},{3.5,2.9},{2.2,2.7}, {1.6,3.8},{1.3,2.6},{0.1,2.3}, {1.1,1.6} }; GLint lineWidth=3; /* ** *********************************************************** */ void render(vertexType * image, int numVertices, GLenum mode){ int i; glBegin(mode); for(i=0;i&amp;lt;numVertices;i++) glVertex2d(image[i][x],image[i][y]); glEnd(); } void renderView(){ int i; glColor3dv(colour[orange]); render(star,starSize,GL_LINE_LOOP); } void display(){ /* ** Clear the window with the background colour before ** (re)rendering. */ glClear(GL_COLOR_BUFFER_BIT); renderView(); glFlush(); } void reshape(int w,int h){ /* ** Set the global width and height ** to the current GLUT values. */ width=w; height=h; /* ** Set the viewport to the whole GLUT window. ** This is the default. */ glViewport(xOrigin,yOrigin,width,height); /* ** Tell OpenGL to clear out whatever is in ** the PROJECTION matrix and set the abstract ** world coordinates. */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(xLeft,xRight,yBottom,yTop); /* ** It is a good programming habit to return the ** matrix mode to the default MODELVIEW matrix. */ glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void setUpGLUT(int argc,char ** argv){ glutInit(&amp;amp;argc,argv); /* ** The variables, width, height, xPosition, ** and yPosition are global because I may ** wish to change them from many functions ** as the program is running. */ glutInitWindowSize(width,height); glutInitWindowPosition(xPosition,yPosition); /* ** If a user enters a string on the command line ** use that as the title for the window, otherwise ** use a default title. */ if(argc &amp;gt; 1) glutCreateWindow(argv[1]); else glutCreateWindow(&amp;quot;Star&amp;quot;); /* ** Register callbacks. */ glutDisplayFunc(display); glutReshapeFunc(reshape); } void initialiseGL(){ /* ** Set the background colour ** (clear colour) to white. */ glClearColor(1,1,1,ALPHA); glLineWidth(lineWidth); } int main(int argc,char ** argv){ setUpGLUT(argc,argv); initialiseGL(); /* ** Display window and enter the GLUT event ** processing loop. */ glutMainLoop(); return 0; } &lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;</pre></body></html></pre></body></html>