?这是一个类似于地球绕太阳旋转的demo
原有的例子是用键盘接受事件,我做了修改,使用了timer把他变成一个动态旋转的
#import <Foundation/Foundation.h> #include <GLUT/GLUT.h> static int year=0,day=0; void init() { glClearColor(0,0,0,0); glShadeModel(GL_FLAT); } void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1,1,1); glPushMatrix(); glutWireSphere(1,20,16); glRotatef((GLfloat)year,0,1,0); glTranslated(2,0,0); glRotatef((GLfloat)day,0,1,0); glutWireSphere(0.2,10,8); glPopMatrix(); glutSwapBuffers(); } void reshape(int w,int h) { glViewport(0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60,(GLfloat)w/(GLfloat)h,1,20); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0,0,5,0,0,0,0,1,0); } void fishboard() { day=(day+10)%360; year=(year+5)%360; glutPostRedisplay(); } void timerProc(int id) { fishboard(); glutTimerFunc(50,timerProc,1);//需要在函数中再调用一次,才能保证循环 } int main(int argc,char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); glutInitWindowSize(500, 500); glutInitWindowPosition(100,100); glutCreateWindow("Xcode Glut Demo"); init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutTimerFunc(50,timerProc,1); glutMainLoop(); return 0; }
时间: 2024-10-08 18:05:48