#include <GL/glut.h>
#include <stdlib.h>
static int year = 0, day = 0;
void init(void) {
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}
void display(void){
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glPushMatrix();
glPushMatrix();
glPushMatrix();
glPushMatrix();
glPushMatrix();
glRotatef ((GLfloat) day, 1.0, 1.0, 0.5);
glutWireSphere(1.0, 20, 16);
glPopMatrix() ;
glutWireSphere(1.0, 20, 16);
glPopMatrix();
glRotatef ((GLfloat) day, 0.2, 1.0, 1.0);
glTranslatef (2.0, 0.0, 0.0);
glutWireSphere(0.2, 10, 8);
glPopMatrix();
glRotatef ((GLfloat)year,0.2,1.0,1.0);
glTranslatef (1.6, 0.0, 0.0);
glutWireSphere(0.15, 9, 4);
glPopMatrix();
glRotatef ((GLfloat)year,-0.2, -0.3, -1.0);
glTranslatef(2.4, 0.0, 0.0);
glutWireSphere(0.15, 8, 4);
glPopMatrix();
glutSwapBuffers();
}
void reshape (int w, int h){
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}
void idle (){
day = (day + 10) % 360;
year = (year + 5) % 360;
Sleep(30) ;
glutPostRedisplay();
return ;
}
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
渣
最新推荐文章于 2023-11-15 16:36:46 发布