纹理贴图贴上后为什么是反的?跪求高手解决

解决方案 »

  1.   

    ::glNewList(1,GL_COMPILE_AND_EXECUTE);  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);  glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
      glEnable(GL_TEXTURE_2D);
      glShadeModel(GL_SMOOTH);//寻择地一个纹理进行贴图
    if(m_Texture[0].GetData() != NULL)
    glTexImage2D(GL_TEXTURE_2D,0,3,
                 m_Texture[0].GetWidth(),
     m_Texture[0].GetHeight(),0,
     GL_RGB,GL_UNSIGNED_BYTE,
     m_Texture[0].GetData());
    glBegin(GL_POLYGON);
    //glNormal3d(0.0,0.0,1.0);
    glTexCoord2f(0.0, 0.0); glVertex3d(-0.5f, -0.5f, 0.5f);
    glTexCoord2f(1.0, 0.0); glVertex3d(0.5f, -0.5f, 0.5f);
    glTexCoord2f(1.0, 1.0); glVertex3d( 0.5f, 0.5f, 0.5f);
    glTexCoord2f(0.0, 1.0); glVertex3d(-0.5f, 0.5f, 0.5f);
    glEnd();
    //选择第二个纹理进行贴图
    if(m_Texture[1].GetData() != NULL)
    glTexImage2D(GL_TEXTURE_2D,0,3,
                 m_Texture[1].GetWidth(),
     m_Texture[1].GetHeight(),0,
     GL_RGB,GL_UNSIGNED_BYTE,
     m_Texture[1].GetData());
    glBegin(GL_POLYGON);
    //glNormal3d(0.0,0.0,-1.0);
    glTexCoord2f(1.0, 0.0); glVertex3d(-0.5f, -0.5f, -0.5f);
    glTexCoord2f(1.0, 1.0); glVertex3d(-0.5f, 0.5f, -0.5f);
    glTexCoord2f(0.0, 1.0); glVertex3d(0.5f, 0.5f, -0.5f);
    glTexCoord2f(0.0, 0.0); glVertex3d(0.5f, -0.5f, -0.5f);
    glEnd();//选择第三个纹理进行贴图if(m_Texture[2].GetData() != NULL)
    glTexImage2D(GL_TEXTURE_2D,0,3,
                 m_Texture[2].GetWidth(),
     m_Texture[2].GetHeight(),0,
     GL_RGB,GL_UNSIGNED_BYTE,
     m_Texture[2].GetData()); glBegin(GL_POLYGON);
    //glNormal3d(1.0,0.0,0.0);
    glTexCoord2f(0.0, 1.0); glVertex3d(-0.5f, 0.5f, -0.5f);
    glTexCoord2f(0.0, 0.0); glVertex3d(-0.5f, 0.5f, 0.5f);
    glTexCoord2f(1.0, 0.0); glVertex3d(0.5f, 0.5f, 0.5f);
    glTexCoord2f(1.0, 1.0); glVertex3d(0.5f, 0.5f, -0.5f);
    glEnd();//选择第四个纹理进行贴图
    if(m_Texture[3].GetData() != NULL)
    glTexImage2D(GL_TEXTURE_2D,0,3,
                 m_Texture[3].GetWidth(),
     m_Texture[3].GetHeight(),0,
     GL_RGB,GL_UNSIGNED_BYTE,
     m_Texture[3].GetData()); glBegin(GL_POLYGON);
    //glNormal3d(-1.0,0.0,0.0);
    glTexCoord2f(1.0, 1.0); glVertex3d(-0.5f, -0.5f, -0.5f);;
    glTexCoord2f(0.0, 1.0); glVertex3d(0.5f, -0.5f, -0.5f);
    glTexCoord2f(0.0, 0.0); glVertex3d(0.5f, -0.5f, 0.5f);
    glTexCoord2f(1.0, 0.0); glVertex3d(-0.5f, -0.5f, 0.5f);
    glEnd();//选择第五个纹理进行贴图
    if(m_Texture[4].GetData() != NULL)
    glTexImage2D(GL_TEXTURE_2D,0,3,
                 m_Texture[4].GetWidth(),
     m_Texture[4].GetHeight(),0,
     GL_RGB,GL_UNSIGNED_BYTE,
     m_Texture[4].GetData());
    glBegin(GL_POLYGON);
    //glNormal3d(0.0,-1.0,0.0);
     glTexCoord2f(1.0, 0.0);glVertex3d(0.5f, -0.5f, -0.5f);
     glTexCoord2f(1.0, 1.0);glVertex3d(0.5f, 0.5f, -0.5f);
    glTexCoord2f(0.0, 1.0); glVertex3d(0.5f, 0.5f, 0.5f);
    glTexCoord2f(0.0, 0.0); glVertex3d(0.5f, -0.5f, 0.5f);
    glEnd();//选择第六个纹理进行贴图
    if(m_Texture[5].GetData() != NULL)
    glTexImage2D(GL_TEXTURE_2D,0,3,
                 m_Texture[5].GetWidth(),
     m_Texture[5].GetHeight(),0,
     GL_RGB,GL_UNSIGNED_BYTE,
     m_Texture[5].GetData());
    glBegin(GL_POLYGON);
    //glNormal3d(0.0,1.0,0.0);
    glTexCoord2f(0.0, 0.0); glVertex3d(-0.5f, -0.5f, -0.5f);
    glTexCoord2f(1.0, 0.0); glVertex3d(-0.5f, -0.5f, 0.5f);
    glTexCoord2f(1.0, 1.0); glVertex3d(-0.5f, 0.5f, 0.5f);
    glTexCoord2f(0.0, 1.0); glVertex3d(-0.5f, 0.5f, -0.5f);
    glEnd();