zoukankan      html  css  js  c++  java
  • OpenGL例子:机器人手臂

    #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;  
    }  
    
  • 相关阅读:
    c#随便写写 数据层和表现层,队列执行
    unity代码设置鼠标样式
    Unity c#反射查找类中符合条件的方法并执行
    封装你的协程Unity TaskManager
    基于steamworks获取steam用户头像
    开启Unity项目中VS工程的属性面板
    移动端的动态阴影
    c#静态扩展方法,字典的克隆扩展方法
    Unity热更方案汇总
    lua输入函数名字符串执行函数
  • 原文地址:https://www.cnblogs.com/make217/p/6658735.html
Copyright © 2011-2022 走看看