zoukankan      html  css  js  c++  java
  • 旋转的正方体

    #include <GL/glut.h>
    GLfloat rquad;      //立方体旋转角度
    void init(void)
    {
     glClearColor(0.0f,0.0f,0.0f,0.0f);
     glShadeModel(GL_SMOOTH);
     glEnable(GL_DEPTH_TEST);   //激活深度测试,以隐藏被遮挡面
    }

    void display(void)
    {
     //清除颜色缓存和深度缓存
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glLoadIdentity();
     glTranslatef(0.0f,0.0f,-7.0f);
     glRotatef(rquad,1.0f,1.0f,1.0f);
     glBegin(GL_QUADS);
     glColor3f(0.0f,1.0f,0.0f);
     glVertex3f(1.0f,1.0f,-1.0f);
     glVertex3f(-1.0f,1.0f,-1.0f);
     glVertex3f(-1.0f,1.0f,1.0f);
     glVertex3f(1.0f,1.0f,-1.0f);

     glColor3f(1.0f,0.5f,0.0f);
     glVertex3f(1.0f,-1.0f,1.0f);
     glVertex3f(-1.0f,-1.0f,1.0f);
     glVertex3f(-1.0f,-1.0f,-1.0f);
     glVertex3f(1.0f,-1.0f,-1.0f);

     glColor3f(1.0f,0.0f,0.0f);
     glVertex3f(1.0f,1.0f,1.0f);
     glVertex3f(-1.0f,1.0f,1.0f);
     glVertex3f(-1.0f,-1.0f,1.0f);
     glVertex3f(1.0f,-1.0f,1.0f);

     glColor3f(1.0f,1.0f,0.0f);
     glVertex3f(1.0f,-1.0f,-1.0f);
     glVertex3f(-1.0f,-1.0f,-1.0f);
     glVertex3f(-1.0f,1.0f,-1.0f);
     glVertex3f(1.0f,1.0f,-1.0f);

     glColor3f(0.0f,0.0f,1.0f);
     glVertex3f(-1.0f,1.0f,1.0f);
     glVertex3f(-1.0f,1.0f,-1.0f);
     glVertex3f(-1.0f,-1.0f,-1.0f);
     glVertex3f(-1.0f,-1.0f,1.0f);

     glColor3f(1.0f,0.0f,1.0f);
     glVertex3f(1.0f,1.0f,-1.0f);
     glVertex3f(1.0f,1.0f,1.0f);
     glVertex3f(1.0f,-1.0f,1.0f);
     glVertex3f(-1.0f,-1.0f,-1.0f);

      glEnd();
      rquad-=0.2f;            //加一个角度
      glutSwapBuffers();      //交换双缓存
    }

    void reshape(int width,int height)
    {
     glViewport(0,0,width,height);
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
     gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
    }

    void keyboard(unsigned char key,int x,int y)
    {
     switch (key)
     {
       case 27:
        //exit(0);
       break;
          default:
        break;
     }
    }

    int main(int argc,char** argv)
    {
     glutInit(&argc,argv);
     //使用双缓存模式和深度缓存
     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
     glutInitWindowSize(600,350);
     glutInitWindowPosition(200,200);
     glutCreateWindow("旋转动画");
     init();
     glutDisplayFunc(display);
     glutReshapeFunc(reshape);
     glutKeyboardFunc(keyboard);
     glutIdleFunc(display);   //设置空闲时用的函数
     glutMainLoop();
     return 0;
    }

  • 相关阅读:
    Java中的位运算符
    华为2019年NE40E-X8,承诺命令
    华为网络设备修改console密码
    MySQL5.7 多实例
    华为防火墙域间策略全开命令
    Linux基础命令---ntpstat显示时间服务器同步
    【转载】Java程序模拟公安局人员管理系统
    redis cluster集群动态伸缩--删除主从节点
    DBUtils的使用之查询的操作
    服务治理-Resilience4j(限流)
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/1971844.html
Copyright © 2011-2022 走看看