opengl简单的交互代码

//test.c
    #include  
    #include
    float xx=-0.5,yy=-0.5,mm=0.5,nn=0.5; 
    void myDisplay(void)  
    {  
        glClear(GL_COLOR_BUFFER_BIT);//GL_COLOR_BUFFER_BIT表示清除颜色  
        glRectf(xx, yy, mm, nn); //画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标  
        glFlush(); //保证前面的OpenGL命令立即执行(而不是让它们在缓冲区中等待)。  
    }  
    void Keyboard(unsigned char key, int x, int y){

    switch(key)
    {
    case '1':
    xx=-0.9;
    ;
        break;
    case '2':
     xx=-0.1;
        break;
    case '3':
        exit(0);
        break;
    }

    glutPostRedisplay();

    }
      
    void mytime(int value){
      
        if(xx>-1)
            xx-=0.01;
    glutPostRedisplay();  //重画,相当于10重新调用Display(),改编后的变量得以传给绘制函数
    //sleep(10);

        
    glutTimerFunc(200, mytime, 10);


    }

    int main(int argc, char *argv[])  
    {  
        glutInit(&argc, argv);//对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次  
        glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //设置显示方式  
        glutInitWindowPosition(100, 100); //设置窗口位置  
        glutInitWindowSize(400, 400);//窗口大小  
        glutCreateWindow("第一个OpenGL程序"); //根据前面设置的信息创建窗口。参数将被作为窗口的标题。  
        glutDisplayFunc(&myDisplay); //当需要画图时,请调用myDisplay函数  
        glutKeyboardFunc(Keyboard);////注册键盘响应回调函数
        glutTimerFunc(200, mytime, 10);
        glutMainLoop(); //进行一个消息循环  
        return 0;  
    }  

gcc  test -o test.c -lGL -lglut -lGLU





你可能感兴趣的:(liniux)