Применение 2d текстуры к одной грани куба с изменением направления z в opengl - PullRequest
1 голос
/ 22 декабря 2019

Я пытаюсь наложить текстуру на 1 грань куба, но у меня проблема в том, что куб также находится в направлении z.

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, Tex);
glBegin(GL_POLYGON);
  glTexCoord2f( 1.0, 1.0); glVertex3f( 1.0,  1.0,  1);
  glTexCoord2f( 1.0, -1.0); glVertex3f( 1.0, -1.0,  1);
  glTexCoord2f( 1.0, -1.0); glVertex3f( 1.0, -1.0, -1);
  glTexCoord2f( 1.0, 1.0); glVertex3f( 1.0,  1.0, -1);
glEnd();
glDisable(GL_TEXTURE_2D);

Очевидно, что так я завершаюс повторяющимися вершинами текстуры (1,1) и (1, -1), потому что они не включают в себя ось Z. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 22 декабря 2019

Нет необходимости, чтобы координаты текстуры были связаны с компонентами x и y координат вершины или даже должны быть одинаковыми. Координаты текстуры полностью независимы.
Вы должны определить, как 2-мерная текстура обернута на поверхности в 3-мерном пространстве. Для каждой стороны куба вы должны определить отдельные координаты текстуры.

Изменить координаты текстуры. например:

glBegin(GL_POLYGON);

glTexCoord2f( 1.0,  1.0); glVertex3f( 1.0,  1.0,  1.0);
glTexCoord2f( 1.0,  0.0); glVertex3f( 1.0, -1.0,  1.0);
glTexCoord2f( 0.0,  0.0); glVertex3f( 1.0, -1.0, -1.0);
glTexCoord2f( 0.0,  1.0); glVertex3f( 1.0,  1.0, -1.0);

glEnd();
...