码迷,mamicode.com
首页 > 其他好文 > 详细

OpenGL step to step(2)

时间:2016-03-31 18:38:19      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

?这是一个类似于地球绕太阳旋转的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;
}

 

OpenGL step to step(2)

标签:

原文地址:http://www.cnblogs.com/fish124423/p/5341896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!