|
|
- #include <gl/glut.h>
- GLfloat UpAngle = 0.0f;
- GLfloat LeAngle = 0.0f;
- void Render(void)
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glRotatef(UpAngle,1.0f,0.0f,0.0f);
- glRotatef(LeAngle,0.0f,1.0f,0.0f);
- glBegin(GL_TRIANGLES);
- //正面
- glColor3f(1.0f,0.0f,0.0f);
- glNormal3f(0.0f,0.0f,1.0f);
- glVertex3f(10.0f,10.0f,10.0f);
- glColor3f(0.0f,1.0f,0.0f);
- glVertex3f(-10.0f,10.0f,10.0f);
- glVertex3f(10.0f,-10.0f,10.0f);
- glVertex3f(10.0f,-10.0f,10.0f);
- glVertex3f(-10.0f,10.0f,10.0f);
- glColor3f(0.0f,0.0f,1.0f);
- glVertex3f(-10.0f,-10.0f,10.0f);
- glEnd();
- glPopMatrix();
- glutSwapBuffers();
- }
- void InitGL(void)
- {
- GLfloat ambientlight[] = {0.5f,0.5f,0.5f,1.0f};
- GLfloat diffuselight[] = {1.0f,1.0f,1.0f,1.0f};
- GLfloat positionlight[] = {0.0f,0.0f,30.0f,1.0f};
- glLightfv(GL_LIGHT0,GL_AMBIENT,ambientlight);
- glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuselight);
- glLightfv(GL_LIGHT0,GL_POSITION,positionlight);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHTING);
- //glEnable(GL_CULL_FACE);
- glEnable(GL_DEPTH_TEST);
- glClearColor(0.0f,0.0f,0.0f,1.0f);
- }
- void ChangeSize(int w,int h)
- {
- if(h <= 0)
- h = 1;
- glViewport(0,0,w,h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(45.0f,(GLfloat)w/(GLfloat)h,1.0f,100.0f);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0f,0.0f,-30.0f);
- }
- void TimerFunc(int v)
- {
- glutPostRedisplay();
- glutTimerFunc(33,TimerFunc,1);
- }
- int main()
- {
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA);
- glutInitWindowSize(800,600);
- glutCreateWindow("LIGHT");
- glutDisplayFunc(Render);
- glutReshapeFunc(ChangeSize);
- glutTimerFunc(33,TimerFunc,1);
- InitGL();
- glutMainLoop;
-
- return 0;
- }
复制代码
这个程序连程序窗口都没有出来就结束了,我不知道为什么 也不清楚哪里错了 |
|