OpenGL - Текстурные координаты на квад

Я понятия не имею, что не так. Кажется, все в порядке. Вот код (текстура загружена, просто рисунок):

glBegin( GL_QUADS );
    float TX1,TX2,TY1,TY2;

    TX1=some_numbers_check_below_code;
    TX2=some_numbers_check_below_code;
    TY1=some_numbers_check_below_code;
    TY2=some_numbers_check_below_code;

    glTexCoord2f(TX1,TY2);
    glVertex3f( float(RectOutput.x), float(RectOutput.y), 0.0f );

    glTexCoord2f(TX2,TY2);
    glVertex3f( float(RectOutput.x+InputWidth), float(RectOutput.y), 0.0f );

    glTexCoord2i(TX2,TY1);
    glVertex3f( float(RectOutput.x+InputWidth), float(RectOutput.y+InputHeight), 0.0f );(InputY)/float(Input.H)) );

    glTexCoord2f(TX1,TY1);
    glVertex3f( float(RectOutput.x), float(RectOutput.y+InputHeight), 0.0f );

glEnd();

Это нормально с:

TX1=0.0;
TX2=1.0;
TY1=1.0;
TY2=0.0;

(Хорошо: http://i.imgur.com/xLeBm.png)

Но нарушается с (например.):

TX1=0.0;
TX2=0.5;
TY1=1.0;
TY2=0.5;

(Вот так: http://i.imgur.com/UykBh.png)

Действительно, это меня раздражает. Вероятно, проблема не в этом коде. Все должно быть хорошо... но это не так.

Есть идеи?

2 ответа

Решение

"Я понятия не имею, что случилось. Кажется, все хорошо". Отлично, тогда не нужно отвечать!

Сначала вы должны объяснить, что вы ожидаете получить во втором случае. Я не эксперт по OpenGL, но ваш второй набор координат кажется неправильным.

Первый: 0,0 -> 1,0 -> 1,1 -> 0,1:

  0     1
0 x---->x
  |     |
  |     |
  |     v
1 x<----x

Второй: 0,.5 -> .5,.5 -> .5,1 -> 0,1:

  0     1
0 +-----+
  |     |
  x->x  |
  |  v  |
1 +--x->x

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

Ох... Я чувствую себя глупо. Извините, что нашли время. Вот ошибка:

glTexCoord2i (TX2, Ty1);

Я должен использовать glTexCoord2 F не я... Просто забыл изменить его...

Другие вопросы по тегам