我用glTranslatef()函数实现了一个小球在窗口中运动的程序(在窗口中来回弹),但是显示的小球是闪烁的,不清晰,不知道是怎么回事?请大家帮帮忙!源程序如下:
#include <stdlib.h>
#include <stdio.h>
#include <GL/glut.h> 
float x=-1.0;
float y=0.4;
bool flagx=true;
bool flagy=true;
float a=1;
float b=1;
void background()
{
glClearColor(1.0,1.0,1.0,0.0);
}void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glTranslatef(x,y,0.0);
glBegin(GL_POLYGON);
glColor3f(1.0,0.0,0.0);
glutSolidSphere(0.05,20.0,20.0);
glEnd();
glPopMatrix();
glFlush();
}void myReshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

if(w <= h)
gluOrtho2D(-2.0,2.0,-2.0,2.0*(GLfloat)h/(GLfloat)w);
else
gluOrtho2D(-2.0,2.0*(GLfloat)w/(GLfloat)h,-2.0,2.0);
glMatrixMode(GL_MODELVIEW);
}
void chonghui()
{
a+=0.00005;
//x
if (x>=2.0)
{
flagx=false;
}
if (x<=-2.0)
{
flagx=true;
}
if(flagx)
    x+=0.001*a;
else
x-=0.001*a;
b+=0.00002;
//y
if (y>=2.0)
{
flagy=false;
}
if (y<=-2.0)
{
flagy=true;
}

if(flagy)
    y+=0.001*b;
else
y-=0.001*b; glutPostRedisplay();
}
int main(int argc,char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(200,200);

glutCreateWindow("Triangle");

background(); glutReshapeFunc(myReshape);
glutDisplayFunc(myDisplay);
glutIdleFunc(chonghui);
glutMainLoop();

return(0);
}