#include <stdlib.h>
#include<GL/glut.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
//#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置入口地址
int r=0;
int i;
void changeSize(int w, int h)
{
float ratio = 1.0* w / h;
glViewport(0, 0, w, h);//视区变换
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,ratio,1,1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0,0.0,5.0, 0.0,0.0,0.0,0.0f,1.0f,0.0f);//[-2,2]
}
void renderScene(void)
{
glClearColor(1.0, 1.0, 1.0, 0); // 设置刷新背景色
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//glColor3f(1.0,0.0,0.0);
if(i>0){
glPointSize(10);
glBegin(GL_POINTS);//GL_POINTS
glColor3f(1.0,0.0,0.0);
glVertex3f(1.0,-1.0,0.0);
glEnd();}
if(i>1){
glBegin(GL_LINES);//GL_LINES
glColor3f(0.0,0.0,0.0);
glVertex3f(1.0,-0.5,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,0.0,0.0);
glEnd();}
if(i>2){
glBegin(GL_QUADS);//GL_QUADS
glColor3f(1.0,0.0,0.0);
glVertex3f(-0.5,-1.0,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(-1.5,-1.0,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(-1.5,0.0,0.0);
glColor3f(1.0,0.0,0.0);
glVertex3f(-0.5,0.0,0.0);
glEnd();}
if(i>3){
glBegin(GL_TRIANGLES);//GL_TRIANGLE
glColor3f(0.8,0.4,0.4);
glVertex3f(-0.8,0.5,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(-1.5,0.6,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(-0.8,0.8,0.0);
glEnd();}
if(i>4){
glBegin(GL_POLYGON);//GL_POLYGON
glColor3f(0.0,0.0,0.0);
glVertex3f(1.0,0.5,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(2.0,0.5,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(1.0,1.0,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(2.0,1.0,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(1.5,0.7,0.0);
glEnd();}
if(i>5){
glBegin(GL_LINE_STRIP);//GL_LINE_STRIP
glColor3f(1.0,0.0,0.0);
glVertex3f(-3.5,-1.0,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(0.0,2.5,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(1.5,-1.0,0.0);
glEnd();}
if(i>6){
glBegin(GL_LINE_LOOP);//GL_LINE_LOOP
glColor3f(0.0,0.0,0.0);
glVertex3f(2.8,2.8,0.0);
glColor3f(0.0,0.5,0.0);
glVertex3f(0.0,2.8,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(1.8,1.5,0.0);
glEnd();}
glFlush();
glutSwapBuffers();
}
void keyboard( unsigned char key, int x, int y ) // Create Keyboard Function
{
switch ( key ) {
case 65:
glutFullScreen ( ); // Go Into Full Screen Mode
break; // Ready For Next Case
case 66:
glutReshapeWindow ( 800, 600 ); // Go Into A 500 By 500 Window
break; // Ready For Next Case
case 27: // When Escape Is Pressed...
exit ( 0 ); // Exit The Program
break; // Ready For Next Case
case 67:
i=1;
glutPostRedisplay(); //redraw
break;
case 68:
i=2;
glutPostRedisplay(); //redraw
break;
case 69:
i=3;
glutPostRedisplay(); //redraw
break;
case 70:
i=4;
glutPostRedisplay();//redraw
break;
case 71:
i=5;
glutPostRedisplay();//redraw
break;
case 72:
i=6;
glutPostRedisplay();//redraw
break;
case 73:
i=7;
glutPostRedisplay();//redraw
break;
default: // Now Wrap It Up
break;
}
//glutPostRedisplay();//redraw
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);//GLUT_SINGLE
glutInitWindowPosition(100,100);
glutInitWindowSize(800,600);
glutCreateWindow("glut framework");
glutDisplayFunc(renderScene);
glutKeyboardFunc( keyboard );
glutReshapeFunc(changeSize);
glutMainLoop();
}
评论0