OpenGl - текстура на glutSolidSphere не показывает - PullRequest
0 голосов
/ 09 января 2012

мне удалось загрузить текстуру

// 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 голосов
/ 09 января 2012

Возможно, вы загрузили текстуру изображения. Но вам также необходимо указать координаты текстуры. Ваш корабль может сделать это. Однако glutSolidSphere этого не делает, и вы ничего не можете с этим поделать. Так что не используйте glutSolidSphere.

...