glutSolidSphere上的OpenGl纹理不显示

OpenGl - texture on glutSolidSphere does not show

本文关键字:显示 纹理 OpenGl 上的 glutSolidSphere      更新时间:2023-10-16

我已成功加载纹理

// 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);

任何人知道为什么会发生这种事,请。。。(请不要记下我,我在这里很努力)

您可能已经加载了纹理图像。但您也需要提供纹理坐标。你的船可能会这样做。但是,glutSolidSphere没有,你对此无能为力。所以不要使用glutSolidSphere。