положение для текстуры в OpenGL - PullRequest
1 голос
/ 11 мая 2010

У меня есть вопрос относительно того, как объявить точки для текстуры на кубе

точно, я имею в виду:

glTexCoord2f(x.f, y.f);

для лицевой стороны, моя декларация работает:

glBegin(GL_POLYGON);   //Vorderseite
        glNormal3f(0.0f, 0.0f, 1.0f);//normale für vorderseite

    glTexCoord2f(0.0f, -1.f);
    glVertex3f(-fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f);

    glTexCoord2f(1.f, -1.f);
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f);

    glTexCoord2f(1.f, 0.0f);
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f); 

    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(-fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f);
    glEnd();

но для правой стороны он не работает, я полагаю, мне нужны другие параметры для glTexCoord2f, но я не знаю, с кем из них.

glBegin(GL_POLYGON);   //Rechte Seite

    glNormal3f(1.0f, 0.0f, 0.0f); //normale für rechte seite

    glTexCoord2f(0.0f, -1.f);
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f);

    glTexCoord2f(1.0f, -1.f);
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,-fSeitenL/0.0f);

    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,-fSeitenL/0.0f);

    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/0.0f);
    glEnd();

после того как я закрою "объявление текстуры с помощью"

glDisable(GL_TEXTURE_2D);

заранее спасибо

редактирование:

передняя сторона показана с картинкой, другая сторона не показана, даже «кубическая сторона». сейчас я просто использую черное изображение с некоторыми случайными пробелами, поэтому точное положение не так уж важно, несмотря на то, что я очень заинтересован, как правильно установить glTexCoord2f.

Ответы [ 2 ]

0 голосов
/ 11 мая 2010

Поскольку вы используете отрицательные текстурные координаты (или что-то еще, находящееся за пределами диапазона 0..1), вам необходимо убедиться, что режим обтекания текстурой настроен на повторение.вместо этого установите GL_CLAMP, тогда любое значение, меньшее 0, будет установлено равным 0, а любое значение, большее 1, будет установлено равным 1. Но поскольку вы правильно говорите первую часть текстур модели, это, вероятно, не ваша проблема.

Следующая наиболее вероятная проблема - освещение.Если вы выключите освещение с помощью glDisable(GL_LIGHTING);, появится ли вся модель?Если это так, то вам нужно убедиться, что у вас есть источник света, обращенный к проблемной части вашей модели, или добавить компонент освещения в ваш источник света.

0 голосов
/ 11 мая 2010

Как именно это не работает?

Если текстура не отображается или применяется неправильная текстура, это означает, что вы должны установить другую текстуру с помощью glBindTexture ().

Если текстура выровнена неправильно, вы должны убедиться, что вершины, которые совместно используются двумя гранями, имеют одинаковую координату текстуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...