OpenGl - glutSolidSphere上的纹理没有显示

时间:2012-01-09 05:53:54

标签: c++ opengl 3d textures glut

我设法加载纹理

// Load texture
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);



    pBytes = gltLoadTGA("../earth.tga", &iWidth, &iHeight, &iComponents, &eFormat);     
    glTexImage2D(GL_TEXTURE_2D, 0, iComponents, iWidth, iHeight, 0, eFormat, GL_UNSIGNED_BYTE, pBytes);
    free(pBytes);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

当我像这样纹理球体时它没有显示(图像256x256 32位)

glDisable(GL_LIGHTING);

    glEnable(GL_TEXTURE_2D);
    glutSolidSphere(35.0f, 30, 17); 
    glDisable(GL_TEXTURE_2D);

    glEnable(GL_LIGHTING);

但是我有一个由金字塔形状制成的船,同样的技术也适用于它

glEnable(GL_TEXTURE_2D);
    ship(); 
    glDisable(GL_TEXTURE_2D);

任何人都知道为什么会发生这种情况请...(请不​​要标记我,我在这里努力工作)

1 个答案:

答案 0 :(得分:0)

您可能已加载纹理图像。但是你还需要提供纹理坐标。你的船可能会这样做。然而,glutSolidSphere却没有,而且你无能为力。所以不要使用glutSolidSphere。