zoukankan      html  css  js  c++  java
  • OpenGL step to step(2)

    这是一个类似于地球绕太阳旋转的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;
    }
  • 相关阅读:
    idea优秀插件(Java开发常用)
    mysql中文乱码问题解决
    SpringMVC生成任意文件,访问链接即下载
    SpringMVC生成Excel下载
    [转]java实现excel的导入导出(poi详解)
    [转]遇到乱码了查看乱码编码
    idea打包java可执行jar包
    Java项目JUnit简单使用
    [转]SpringMVC拦截器简单教程
    Java精确计算小数
  • 原文地址:https://www.cnblogs.com/fish124423/p/5341896.html
Copyright © 2011-2022 走看看