Qt 生成三维天空,大地的有关问题

Qt 生成三维天空,大地的问题
void FightertestView::DrawTerrain(void)
{
    register int x,z;
    glEnable(GL_TEXTURE_2D);
    glBindTexture( GL_TEXTURE_2D, texture[0] );
    for(z=0;z<DIMZ-1;z++)
    {
        for(x=0;x<DIMX-1;x++)
        {
            glBegin(GL_QUADS);
            glTexCoord2d( 0.0, 0.0 );
            glVertex3f(Terrain[x][z].x+32,Terrain[x][z].y-35,Terrain[x][z].z);
            glTexCoord2d( 0.0, 1.0 );
            glVertex3f(Terrain[x][z+1].x+32,Terrain[x][z+1].y-35,Terrain[x][z+1].z);
            glTexCoord2d( 1.0, 1.0 );
            glVertex3f(Terrain[x+1][z+1].x+32,Terrain[x+1][z+1].y-35,Terrain[x+1][z+1].z);
            glTexCoord2d( 1.0, 0.0 );
            glVertex3f(Terrain[x+1][z].x+32,Terrain[x+1][z].y-35,Terrain[x+1][z].z);
            glEnd();
        }
    }
    glDisable(GL_TEXTURE_2D);
}

void FightertestView::DrawSky()
{
    qobj = gluNewQuadric();
    gluQuadricNormals(qobj,GLU_SMOOTH);
    gluQuadricTexture(qobj,GL_TRUE);

    glEnable(GL_TEXTURE_2D);     //绘制蓝天白云
    glPushMatrix();
    glBindTexture(GL_TEXTURE_2D, texture[1]);
    glTranslatef(0,0,0);
    glRotatef(90,1,0,0);
    glColor4f(1,1,1,1);
    gluSphere(qobj,1000,32,32);
    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
}

void FightertestView::resizeGL(int width, int height)
{
    if(0 == height)
        height = 1;//防止一条边为0
    glViewport(0, 0, (GLint)width, (GLint)height);//重置当前视口,本身不是重置窗口的,只不过是这里被Qt给封装好了
    glMatrixMode(GL_PROJECTION);//选择投影矩阵
    glLoadIdentity();//重置选择好的投影矩阵
    gluPerspective(45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0);//建立透视投影矩阵
    glColor4f(1.0f, 1.0f, 1.0f, 0.5f);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE);
    glMatrixMode(GL_MODELVIEW);//以下2句和上面出现的解释一样
    glLoadIdentity();

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0f,0.8,0.1f,1000.0f);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    //wglMakeCurrent(NULL,NULL);

}

void FightertestView::paintGL()
{
    //glClear()函数在这里就是对initializeGL()函数中设置的颜色和缓存深度等起作用
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBindTexture(GL_TEXTURE_2D, texture[0]);//绑定纹理目标

    DrawTerrain();
    DrawSky();
    glLoadIdentity();
}

为什么执行以后屏幕会一直闪?有没有哪位大神知道的?在linux系统下做的。

------解决思路----------------------
这个是OpenGL内容吧