第四弹 3D物体无光照绘制

  1 /*************************************************************************
  2     > File Name: frame.cpp
  3     > Author: 
  4     > Mail: 
  5     > Created Time: 2015年11月21日 星期六 15时28分01秒
  6  ************************************************************************/
  7 
  8 #include<iostream>
  9 #include<GL/glut.h>
 10 using namespace std;
 11 static GLfloat spin=0.0;
 12 void init(void)
 13 {
 14     glClearColor(0.0,0.0,0.0,0.0);
 15     glShadeModel(GL_SMOOTH);
 16 }
 17 
 18 void display(void)
 19 {
 20     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 21     glPushMatrix();
 22     glColor3f(1.0,1.0,1.0);
 23 
 24     gluLookAt(-5.0,5.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);
 25 
 26     glLoadIdentity();
 27     glRotatef(spin,0.0,1.0,0.0);
 28     //glutSolidTeapot(20);
 29     glScalef(20.0f,20.0f,20.0f);
 30     glBegin(GL_TRIANGLES);
 31         //front
 32         glColor3f(1.0,0.0,0.0);
 33         glVertex3f(0.0f,1.0f,0.0f);
 34         glColor3f(0.0,1.0,0.0);
 35         glVertex3f(-2.0f,0.0f,0.0f);
 36         glColor3f(0.0,0.0,1.0);
 37         glVertex3f(2.0f,0.0f,0.0f);
 38         //left
 39         glColor3f(1.0,0.0,0.0);
 40         glVertex3f(0.0f,1.0f,0.0f);
 41         glColor3f(1.0,0.0,1.0);
 42         glVertex3f(0.0f,0.0f,3.0f);
 43         glColor3f(0.0,0.0,1.0);
 44         glVertex3f(2.0f,0.0f,0.0f);
 45 
 46         //right
 47         glColor3f(1.0,0.0,0.0);
 48         glVertex3f(0.0f,1.0f,0.0f);
 49         glColor3f(1.0,0.0,1.0);
 50         glVertex3f(0.0f,0.0f,3.0f);
 51         glColor3f(0.0,1.0,0.0);
 52         glVertex3f(-2.0f,0.0f,0.0f);
 53         //bottom
 54         glColor3f(0.0,1.0,0.0);
 55         glVertex3f(-2.0f,0.0f,0.0f);
 56         glColor3f(0.0,0.0,1.0);
 57         glVertex3f(2.0f,0.0f,0.0f);
 58         glColor3f(1.0,0.0,1.0);
 59         glVertex3f(0.0f,0.0f,3.0f);
 60     glEnd();
 61     glPopMatrix();
 62     glutSwapBuffers();
 63 }
 64 
 65 void spinDisplay(void)
 66 {
 67     spin=spin+2.0;
 68     if(spin>360)
 69         spin=spin-360.0;
 70     glutPostRedisplay();
 71 }
 72 
 73 void reshape(int w,int h)
 74 {
 75     glViewport(0,0,(GLsizei)w,(GLsizei)h);
 76     glMatrixMode(GL_PROJECTION);
 77     glLoadIdentity();
 78     glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0);
 79     glMatrixMode(GL_MODELVIEW);
 80     glLoadIdentity();
 81 }
 82 
 83 void mouse(int button,int state,int x,int y)
 84 {
 85     switch(button)
 86     {
 87         case GLUT_LEFT_BUTTON:
 88             if(state == GLUT_DOWN)
 89                 glutIdleFunc(spinDisplay);
 90             break;
 91         case GLUT_MIDDLE_BUTTON:
 92             if(state == GLUT_DOWN)
 93                 glutIdleFunc(NULL);
 94             break;
 95         default:
 96             break;
 97     }
 98 }
 99 
100 int main(int argc,char ** argv)
101 {
102     glutInit(&argc,argv);
103     glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
104     glutInitWindowSize(400,400);
105     glutInitWindowPosition(100,100);
106     glutCreateWindow("OpenGL test");
107     init();
108 
109     glutDisplayFunc(display);
110     glutReshapeFunc(reshape);
111     glutMouseFunc(mouse);
112 
113     glutMainLoop();
114     return 0;
115 }

效果图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值