加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

OpenGL学习——计算机图形学作业:三维显示I LOVE YOU

(2011-06-09 09:55:59)
标签:

opengl学习

计算机图形学

作业

分类: OpenGL

这是用多边形模拟英文I love you的三维显示效果:I ❤ U

主体代码来自于网上,

主要的改进是加入了在OpenGL中显示文字(英文和数字,中文还不能显示)。

先看效果:

http://s12/middle/40d73279ta53de0537cab&690LOVE YOU" TITLE="OpenGL学习——计算机图形学作业:三维显示I LOVE YOU" />

http://s13/middle/40d73279ta53de056baec&690LOVE YOU" TITLE="OpenGL学习——计算机图形学作业:三维显示I LOVE YOU" />

---------------------------------------------------------------------------------------

 

#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>
#include <math.h>
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;
#define MAX_CHAR        128

void drawString(const char* str)
{
    static int isFirstCall = 1;
    static GLuint lists;
    if( isFirstCall )
    isFirstCall = 0;
          lists = glGenLists(MAX_CHAR);
        wglUseFontBitmaps(wglGetCurrentDC(), 0, MAX_CHAR, lists);
     }
         for(; *str!='\0'; ++str)
         glCallList(lists + *str);
}
// 渲染图形
void RenderScene(void)
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
      //  以下代码在图形上方显示作者信息
  glColor3f(1.0f, 0.0f, 0.0f);
     glRasterPos2f(-100.0f, 95.0f);  drawString("This is the homework of the course <Computer Graphic>:");
  glColor3f(.0f, 1.0f, 1.0f);
  glRasterPos2f(-100.0f, 90.0f);  drawString("Author:  ************");
  glRasterPos2f(-100.0f, 85.0f);  drawString("Student ID: **********     ");
     glRasterPos2f(-120.0f, 80.0f);  drawString("Institute of Automation, Chinese Academy of Sciences    ");
  //以下代码显示键盘操作指南:
      glColor3f(0.0f, 0.0f,  1.0f);
  glRasterPos2f(-120.0f, 70.0f);  drawString("");
  glColor3f(1.0f, 0.0f,  1.0f);
  glRasterPos2f(-120.0f, 60.0f);  drawString("Press the Left or Right Direction Key:   Rotate it By the Y  axis/ Rotate to Left or Right ");
  glRasterPos2f(-120.0f, 50.0f);  drawString("Press the Up or Down Direction Key:   Rotate it By the X  axis /Rotate to Up or Down");
//图形渲染开始:
  glPushMatrix();
    glRotatef(xRot, 1.0f, 0.0f, 0.0f);
 glRotatef(yRot, 0.0f, 1.0f, 0.0f);
//用多边形模拟心形图案:正面为红色
 glBegin(GL_POLYGON);
 glColor3ub((GLubyte) 255, (GLubyte)0, (GLubyte)0);
  glVertex3f(0.0f,6.0f,8.0f);
  glVertex3f(-10.0f,18.0f,8.0f);
  
  glVertex3f(-31.0f,18.0f,8.0f);
  glVertex3f(-38.0f,6.0f,8.0f);
  glVertex3f(-26.0f,-20.0f,8.0f);
  glVertex3f(0.0f,-46.0f,8.0f);
  glVertex3f(26.0f,-20.0f,8.0f);
  glVertex3f(38.0f,6.0f,8.0f);
  glVertex3f(31.0f,18.0f,8.0f);
  glVertex3f(10.0f,18.0f,8.0f);
     glEnd();

//用多边形模拟心形图案:
 glBegin(GL_POLYGON);
  glColor3ub((GLubyte)220, (GLubyte)0, (GLubyte)0);
  glVertex3f(0.0f,6.0f,-8.0f);
  glVertex3f(10.0f,18.0f,-8.0f); 
  glVertex3f(31.0f,18.0f,-8.0f);
  glVertex3f(38.0f,6.0f,-8.0f);
  glVertex3f(26.0f,-20.0f,-8.0f);
  glVertex3f(0.0f,-46.0f,-8.0f);
  glVertex3f(-26.0f,-20.0f,-8.0f);
  glVertex3f(-38.0f,6.0f,-8.0f);
  glVertex3f(-31.0f,18.0f,-8.0f);
  glVertex3f(-10.0f,18.0f,-8.0f);
 glEnd();

 glBegin(GL_POLYGON);
glColor3ub((GLubyte) 220, (GLubyte)0, (GLubyte)0);
  glVertex3f(0.0f,6.0f,8.0f);
  glVertex3f(10.0f,18.0f,8.0f);
  glVertex3f(4.0f,28.0f,0.0f);
  glVertex3f(0.0f,16.0f,0.0f);
        glEnd();
 
        glBegin(GL_POLYGON);
glColor3ub((GLubyte) 220, (GLubyte)0, (GLubyte)0);
  glVertex3f(0.0f,6.0f,8.0f);
  glVertex3f(0.0f,16.0f,0.0f);
        glVertex3f(-4.0f,28.0f,0.0f);
  glVertex3f(-10.0f,18.0f,8.0f);
  glEnd();

 glBegin(GL_POLYGON);
glColor3ub((GLubyte) 220, (GLubyte)0, (GLubyte)0); 
  glVertex3f(0.0f,16.0f,0.0f);
        glVertex3f(4.0f,28.0f,0.0f);
  glVertex3f(10.0f,18.0f,-8.0f);
  glVertex3f(0.0f,6.0f,-8.0f);
 glEnd();
 
        glBegin(GL_POLYGON);
glColor3ub((GLubyte) 220, (GLubyte)0, (GLubyte)0);  
        glVertex3f(-4.0f,28.0f,0.0f);
  glVertex3f(0.0f,16.0f,0.0f);
  glVertex3f(0.0f,6.0f,-8.0f);
  glVertex3f(-10.0f,18.0f,-8.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 221, (GLubyte)0, (GLubyte)0);
        glVertex3f(10.0f,18.0f,8.0f);
        glVertex3f(31.0f,18.0f,8.0f);
     glVertex3f(36.0f,28.0f,0.0f);
     glVertex3f(4.0f,28.0f,0.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 221, (GLubyte)0, (GLubyte)0);
        glVertex3f(-31.0f,18.0f,8.0f);
  glVertex3f(-10.0f,18.0f,8.0f);
  glVertex3f(-4.0f,28.0f,0.0f);
     glVertex3f(-36.0f,28.0f,0.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte)0,(GLubyte)0, (GLubyte)0);
     glVertex3f(4.0f,28.0f,0.0f);
  glVertex3f(36.0f,28.0f,0.0f);
  glVertex3f(31.0f,18.0f,-8.0f);
  glVertex3f(10.0f,18.0f,-8.0f);
  
  glEnd();

 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 0, (GLubyte)0, (GLubyte)0);
        glVertex3f(-10.0f,18.0f,-8.0f);
        glVertex3f(-31.0f,18.0f,-8.0f);
     glVertex3f(-36.0f,28.0f,0.0f);
     glVertex3f(-4.0f,28.0f,0.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 222, (GLubyte)0, (GLubyte)0);

        glVertex3f(31.0f,18.0f,8.0f);
  glVertex3f(38.0f,6.0f,8.0f);
  glVertex3f(48.0f,12.0f,0.0f);
        glVertex3f(36.0f,28.0f,0.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 222, (GLubyte)0, (GLubyte)0);
        glVertex3f(-38.0f,6.0f,8.0f);
        glVertex3f(-31.0f,18.0f,8.0f);
        glVertex3f(-36.0f,28.0f,0.0f);   
  glVertex3f(-48.0f,12.0f,0.0f);

  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 222, (GLubyte)0, (GLubyte)0);
        glVertex3f(36.0f,28.0f,0.0f);
        glVertex3f(48.0f,12.0f,0.0f);
        glVertex3f(38.0f,6.0f,-8.0f);
        glVertex3f(31.0f,18.0f,-8.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 222, (GLubyte)0, (GLubyte)0);
       
         
  glVertex3f(-48.0f,12.0f,0.0f); 
  glVertex3f(-36.0f,28.0f,0.0f);  
  glVertex3f(-31.0f,18.0f,-8.0f);
  glVertex3f(-38.0f,6.0f,-8.0f);
     glEnd();

  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 223, (GLubyte)0, (GLubyte)0);
        glVertex3f(38.0f,6.0f,8.0f);
        glVertex3f(26.0f,-20.0f,8.0f);
        glVertex3f(38.0f,-16.0f,0.0f);
        glVertex3f(48.0f,12.0f,0.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 223, (GLubyte)0, (GLubyte)0);
        glVertex3f(-26.0f,-20.0f,8.0f);
  glVertex3f(-38.0f,6.0f,8.0f);
  glVertex3f(-48.0f,12.0f,0.0f);
        glVertex3f(-38.0f,-16.0f,0.0f);
     glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 223, (GLubyte)0, (GLubyte)0);
        glVertex3f(48.0f,12.0f,0.0f);
  glVertex3f(38.0f,-16.0f,0.0f);
  glVertex3f(26.0f,-20.0f,-8.0f);
  glVertex3f(38.0f,6.0f,-8.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 223, (GLubyte)0, (GLubyte)0);
        glVertex3f(-38.0f,6.0f,-8.0f);
        glVertex3f(-26.0f,-20.0f,-8.0f);
        glVertex3f(-38.0f,-16.0f,0.0f);
        glVertex3f(-48.0f,12.0f,0.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 224, (GLubyte)0, (GLubyte)0);
        glVertex3f(0.0f,-46.0f,8.0f);
        glVertex3f(0.0f,-52.0f,0.0f);
  glVertex3f(38.0f,-16.0f,0.0f);
  glVertex3f(26.0f,-20.0f,8.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 224, (GLubyte)0, (GLubyte)0);
        glVertex3f(0.0f,-46.0f,8.0f);
  glVertex3f(-26.0f,-20.0f,8.0f);
  glVertex3f(-38.0f,-16.0f,0.0f);
        glVertex3f(0.0f,-52.0f,0.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 224, (GLubyte)0, (GLubyte)0);
        glVertex3f(38.0f,-16.0f,0.0f);
  glVertex3f(0.0f,-52.0f,0.0f);
  glVertex3f(0.0f,-46.0f,-8.0f);
   glVertex3f(26.0f,-20.0f,-8.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 224, (GLubyte)0, (GLubyte)0);
        glVertex3f(0.0f,-46.0f,-8.0f);
        glVertex3f(0.0f,-52.0f,0.0f);
  glVertex3f(-38.0f,-16.0f,0.0f);
  glVertex3f(-26.0f,-20.0f,-8.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 220, (GLubyte)244, (GLubyte)220);
        glVertex3f(70.0f,6.0f,6.0f);
        glVertex3f(70.0f,-30.0f,6.0f);
  glVertex3f(78.0f,-30.0f,6.0f);
  glVertex3f(78.0f,6.0f,6.0f);
  
  glEnd();
//'u' -a1
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 220, (GLubyte)244, (GLubyte)220);
      glVertex3f(78.0f,6.0f,-6.0f);//a4
  glVertex3f(78.0f,-30.0f,-6.0f);//a3
  glVertex3f(70.0f,-30.0f,-6.0f);//a2
  glVertex3f(70.0f,6.0f,-6.0f);//a1
  glEnd();
//'u' *a1
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 0, (GLubyte)244, (GLubyte)244);
        glVertex3f(70.0f,-30.0f,6.0f);//a2
  glVertex3f(70.0f,6.0f,6.0f);//a1
        glVertex3f(70.0f,6.0f,-6.0f);//-a1
  glVertex3f(70.0f,-30.0f,-6.0f);//-a2
  
  glEnd();
//'u' a1*
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 0, (GLubyte)244, (GLubyte)244);
  glVertex3f(78.0f,6.0f,6.0f);//a4
  glVertex3f(78.0f,-30.0f,6.0f);//a3
  glVertex3f(78.0f,-30.0f,-6.0f);//-a3
  glVertex3f(78.0f,6.0f,-6.0f);//-a4
        glEnd();
//'u' a1 top
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 2, (GLubyte)88, (GLubyte)33);
  
  glVertex3f(70.0f,6.0f,-6.0f);//a1
  glVertex3f(70.0f,6.0f,6.0f);//a1
  glVertex3f(78.0f,6.0f,6.0f);//a4
  glVertex3f(78.0f,6.0f,-6.0f);//a4
        glEnd();
//'u' a1 bottom
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 2, (GLubyte)88, (GLubyte)33);
  
  glVertex3f(78.0f,-30.0f,6.0f);//a3
  glVertex3f(70.0f,-30.0f,6.0f);//a2
  glVertex3f(70.0f,-30.0f,-6.0f);//a2
  glVertex3f(78.0f,-30.0f,-6.0f);//a3
        glEnd();
//'u' a2
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 0, (GLubyte)244, (GLubyte)0);
  
  glVertex3f(78.0f,-30.0f,6.0f);//a1
  glVertex3f(97.0f,-30.0f,6.0f);//a2
  glVertex3f(97.0f,-21.0f,6.0f);//a3
  glVertex3f(78.0f,-21.0f,6.0f);//a4
  glEnd();
//'u' -a2
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 0, (GLubyte)244, (GLubyte)0);
  glVertex3f(78.0f,-21.0f,-6.0f);//a4
  glVertex3f(97.0f,-21.0f,-6.0f);//a3
  glVertex3f(97.0f,-30.0f,-6.0f);//a2
  glVertex3f(78.0f,-30.0f,-6.0f);//a1
  
  
  
  glEnd();
//'u' a2 top
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 222, (GLubyte)199, (GLubyte)123);
  glVertex3f(78.0f,-21.0f,6.0f);//a4
  glVertex3f(97.0f,-21.0f,6.0f);//a3
  glVertex3f(97.0f,-21.0f,-6.0f);//a3
  glVertex3f(78.0f,-21.0f,-6.0f);//a4
  glEnd();
//'u' a2 bottom
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 2, (GLubyte)88, (GLubyte)33);
  glVertex3f(97.0f,-30.0f,6.0f);//a2
  glVertex3f(78.0f,-30.0f,6.0f);//a1
     glVertex3f(78.0f,-30.0f,-6.0f);//a1
     glVertex3f(97.0f,-30.0f,-6.0f);//a2
     glEnd();
//'u' a3
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 0, (GLubyte)244, (GLubyte)0);
  
  glVertex3f(97.0f,-30.0f,6.0f);//a1
  glVertex3f(116.0f,-30.0f,6.0f);//a2
  glVertex3f(116.0f,6.0f,6.0f);//a3
  glVertex3f(97.0f,6.0f,6.0f);//a4
  glEnd();
//'u' -a3
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 0, (GLubyte)244, (GLubyte)0);
  glVertex3f(97.0f,6.0f,-6.0f);//a4
        glVertex3f(116.0f,6.0f,-6.0f);//a3
        glVertex3f(116.0f,-30.0f,-6.0f);//a2
  glVertex3f(97.0f,-30.0f,-6.0f);//a1
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 188, (GLubyte)188, (GLubyte)188);
  glVertex3f(97.0f,-30.0f,6.0f);//a1
  glVertex3f(97.0f,6.0f,6.0f);//a4
  glVertex3f(97.0f,6.0f,-6.0f);//a4
  glVertex3f(97.0f,-30.0f,-6.0f);//a1
  glEnd();
  
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 200, (GLubyte)0, (GLubyte)100);
  glVertex3f(116.0f,6.0f,6.0f);//a3
  glVertex3f(116.0f,-30.0f,6.0f);//a2
  glVertex3f(116.0f,-30.0f,-6.0f);//-a2
  glVertex3f(116.0f,6.0f,-6.0f);//-a3
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 111, (GLubyte)24, (GLubyte)222);
  
  
  glVertex3f(97.0f,6.0f,6.0f);
  glVertex3f(116.0f,6.0f,6.0f);
  glVertex3f(116.0f,6.0f,-6.0f);
  glVertex3f(97.0f,6.0f,-6.0f);
  glEnd();
 
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 2, (GLubyte)88, (GLubyte)33);
  
  
  glVertex3f(116.0f,-30.0f,6.0f);//a2
  glVertex3f(97.0f,-30.0f,6.0f);//a1
  glVertex3f(97.0f,-30.0f,-6.0f);//a1
  glVertex3f(116.0f,-30.0f,-6.0f);//a2
  glEnd();

//'i' a
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 0, (GLubyte)0, (GLubyte)255);
  
  glVertex3f(-90.0f,6.0f,6.0f);//a1
  glVertex3f(-90.0f,-30.0f,6.0f);//a2
  glVertex3f(-77.0f,-30.0f,6.0f);//a3
  glVertex3f(-77.0f,6.0f,6.0f);//a4
  glEnd();
//'i' -a
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 255, (GLubyte)0, (GLubyte)255);
  glVertex3f(-77.0f,6.0f,-6.0f);//a4
        glVertex3f(-77.0f,-30.0f,-6.0f);//a3
        glVertex3f(-90.0f,-30.0f,-6.0f);//a2
  glVertex3f(-90.0f,6.0f,-6.0f);//a1
  glEnd();
//'i' *a
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 255, (GLubyte)255, (GLubyte)22);
  glVertex3f(-90.0f,-30.0f,6.0f);//a2
  glVertex3f(-90.0f,6.0f,6.0f);//a1
  glVertex3f(-90.0f,6.0f,-6.0f);//a1
  glVertex3f(-90.0f,-30.0f,-6.0f);//a2
  glEnd();
//'i' a*
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 133, (GLubyte)133 ,(GLubyte)133);
  glVertex3f(-77.0f,6.0f,6.0f);//a4
  glVertex3f(-77.0f,-30.0f,6.0f);//a3
  glVertex3f(-77.0f,-30.0f,-6.0f);//-a3
  glVertex3f(-77.0f,6.0f,-6.0f);//-a4
  glEnd();
//'i' a top
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 222, (GLubyte)222, (GLubyte)255);
  
  glVertex3f(-90.0f,6.0f,6.0f);//a1
  glVertex3f(-77.0f,6.0f,6.0f);//a4
  glVertex3f(-77.0f,6.0f,-6.0f);//a4
  glVertex3f(-90.0f,6.0f,-6.0f);//a1
  glEnd();
//'i' a bottom
  glBegin(GL_POLYGON);
  glColor3ub((GLubyte) 22, (GLubyte)122, (GLubyte)222);
  glVertex3f(-77.0f,-30.0f,6.0f);//a3
  glVertex3f(-90.0f,-30.0f,6.0f);//a2
  glVertex3f(-90.0f,-30.0f,-6.0f);//a2
  glVertex3f(-77.0f,-30.0f,-6.0f);//a3
  glEnd();
    glPopMatrix();

 
 glutSwapBuffers();
 
}
void SetupRC()
 {
 
 GLfloat  ambientLight[] = { 0.7f, 0.7f, 0.7f, 0.3f };
 GLfloat  diffuseLight[] = { 0.2f, 0.7f, 0.3f, 0.3f };
    GLfloat mat_shininess[]={50.0};
    glShadeModel(GL_SMOOTH);
 glEnable(GL_DEPTH_TEST); // Hidden surface removal
 glFrontFace(GL_CCW);  // Counter clock-wise polygons face out
 glEnable(GL_CULL_FACE);  // Do not calculate inside of jet
 
 glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight);
 glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight);
 glEnable(GL_LIGHTING);
 glEnable(GL_LIGHT0);
 glEnable(GL_DEPTH_TEST);
 glEnable(GL_COLOR_MATERIAL);
 glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
 glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
 }
void SpecialKeys(int key, int x, int y)
{
 if(key==GLUT_KEY_UP)   xRot -= 3.0f;
 if(key==GLUT_KEY_DOWN) xRot += 3.0f;
 if(key==GLUT_KEY_LEFT) yRot -= 3.0f;
 if(key==GLUT_KEY_RIGHT)yRot += 3.0f;
 if(key>356.0f) xRot = 0.0f;
 if(key<-1.0f) xRot = 355.0f;
 if(key>356.0f) yRot = 0.0f;
 if(key<-1.0f) yRot = 355.0f;
 glutPostRedisplay();
}


void ChangeSize(int w,int h)
{
 GLfloat nRange = 110.0f;
    GLfloat lightPos[] = { -100.0f, -50.0f, 100.0f, 0.7f };
 if(h == 0) h = 1;
    glViewport(0, 0, w, h);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
    if (w<=h)
  glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange, nRange);
    else
  glOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
}


int main(int argc, char* argv[])
{
 glutInit(&argc, argv);
 glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
 glutInitWindowSize(1000,700);
 glutInitWindowPosition(10,10);
 glutCreateWindow("*****************************");
 glutReshapeFunc(ChangeSize);
 glutSpecialFunc(SpecialKeys);
 glutDisplayFunc(RenderScene);
 SetupRC();
 glutMainLoop();

 return 0;
}

 

结构其实十分简单,就是各个面的多边形绘制。

然后加入了鼠标键盘控制。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有