//test.c
#include <GL/glut.h>
#include<unistd.h>
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