用vc++在地面上贴了一个图(黄褐色),但是却严重影响了原本画图的效果,尤其是白色灯光下的白色物体,请问如何改善?

解决方案 »

  1.   

    把贴图图像的Alpha通道值降低一些试试
      

  2.   


    void SetupRC(void)
        {
         // Lighting values
        GLbyte *pBytes;
        GLint iWidth, iHeight, iComponents;
        GLenum eFormat;
        GLint iLoop;    GLfloat ambientProperties[] = {0.7, 0.7, 0.7, 1.0};
        GLfloat diffuseProperties[] = {0.8, 0.8, 0.8, 1.0};
        GLfloat specularProperties[] = {1.0, 1.0, 1.0, 1.0}; // Light values and coordinates
         glClearDepth(1.0);
    glEnable(GL_DEPTH_TEST); // Hidden surface removal
    glFrontFace(GL_CCW); // Counter clock-wise polygons face out
    glEnable(GL_CULL_FACE); // Do not calculate insides // Enable lighting
    glEnable(GL_LIGHTING); // Setup and enable light 0
    glLightfv(GL_LIGHT0, GL_AMBIENT, ambientProperties);
         glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseProperties);
         glLightfv(GL_LIGHT0, GL_SPECULAR, specularProperties);
         glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, 1.0);
         
    glEnable(GL_LIGHT0);
         
    // Load textures
    glEnable(GL_TEXTURE_2D);
    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
         glGenTextures(TEXTURE_COUNT, textures);
         for(iLoop = 0; iLoop < TEXTURE_COUNT; iLoop++)
            {
            // Bind to next texture object
            glBindTexture(GL_TEXTURE_2D, textures[iLoop]);        // Load texture, set filter and wrap modes
            pBytes = gltLoadTGA(szTextureFiles[iLoop],&iWidth, &iHeight, &iComponents, &eFormat);
            gluBuild2DMipmaps(GL_TEXTURE_2D, iComponents, iWidth, iHeight, eFormat, GL_UNSIGNED_BYTE, pBytes);
            free(pBytes);    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,  GL_REPEAT);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,  GL_REPEAT);
            
            // Don't need original texture data any more
       } glShadeModel(GL_SMOOTH);
    glClearColor(0.81f, 0.83f, 0.90f, 1.0f );

        }
    以上是环境设置,下面是调用过程。能说的具体点吗
    glDisable(GL_LIGHTING);
      glBegin(GL_QUADS);
    //glColor3f(0.8+colorAdd,0.8+colorAdd,0.75+colorAdd);
    glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_FLOOR]);
    glTexCoord2f(0.0f, 0.0f);
              glVertex3f(-400.0f, -80.0f, 80.0f); glTexCoord2f(1.0f, 0.0f);
    glVertex3f(400.0f, -80.0f, 80.0f); glTexCoord2f(1.0f, 1.0f);
    glVertex3f(400.0f, -80.0f, -300.0f); glTexCoord2f(0.0f, 1.0f);
    glVertex3f(-400.0f, -80.0f, -300.0f);
      glEnd();
      

  3.   

    我好像和你不一样,我只是在做OpenGL的作业。你的好像是遥感应用吧,不太懂