#include <windows.h>  
#include <GL/gl.h>  
#include <GL/glu.h>  
#include <GL/glut.h>  
  
#include <cstdlib>  
#include <cstdio>  
#include <cmath>  
  
static int shoulder = 0, elbow = 0;  
  
void init(void){  
    glClearColor(0.0,0.0,0.0,0.0);  
    glShadeModel(GL_FLAT);//单调着色  
}  
  
void display(void){  
    glClear(GL_COLOR_BUFFER_BIT);  
    glPushMatrix();  
        glTranslatef(-1.0,0.0,0.0);  
        glRotatef((GLfloat)shoulder,0.0,0.0,1.0);  
        glTranslatef(1.0,0.0,0.0);  
        glPushMatrix();  
            glScalef(2.0,0.4,1.0);  
            glutWireCube(1.0);  
        glPopMatrix();  
        glTranslatef(1.0,0.0,0.0);  
        glRotatef((GLfloat)elbow,0.0,0.0,1.0);  
        glTranslatef(1.0,0.0,0.0);  
        glPushMatrix();  
            glScalef(2.0,0.4,1.0);  
            glutWireCube(1.0);  
        glPopMatrix();  
    glPopMatrix();  
    glutSwapBuffers();  
}  
  
void reshape(int w,int h){  
    glViewport(0,0,(GLsizei)w,(GLsizei)h);  
    glMatrixMode(GL_PROJECTION);  
    glLoadIdentity();  
    gluPerspective(65.0,(GLfloat)w/(GLfloat)h,1.0,20.0);  
    glMatrixMode(GL_MODELVIEW);  
    glLoadIdentity();  
    glTranslatef(0.0,0.0,-5.0);  
}  
  
void keyboard(unsigned char key,int x,int y){  
    switch (key){  
    case 's':  
        shoulder = (shoulder + 5) % 360;  
        glutPostRedisplay();  
        break;  
    case 'S':  
        shoulder = (shoulder - 5) % 360;  
        glutPostRedisplay();  
        break;  
    case 'e':  
        elbow = (elbow + 5) % 360;  
        glutPostRedisplay();  
        break;  
    case 'E':  
        elbow = (elbow - 5) % 360;  
        glutPostRedisplay();  
        break;  
    default:  
        break;  
    }  
}  
  
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);  
    glutKeyboardFunc(keyboard);  
    glutMainLoop();  
    return 0;  
}  

相关文章:

  • 2021-07-08
  • 2021-08-01
  • 2021-10-08
  • 2021-08-06
  • 2021-09-30
  • 2021-12-06
  • 2021-12-06
  • 2021-12-16
猜你喜欢
  • 2022-12-23
  • 2021-12-16
  • 2021-07-26
  • 2021-05-14
  • 2021-07-19
  • 2021-05-31
  • 2021-08-06
相关资源
相似解决方案