将二维纹理应用于单个立方体面,并在 opengl 中改变 z 方向

Applying 2d texture to single cube face with change in z direction in opengl

我正在尝试将纹理应用于立方体的 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 轴。我该如何解决这个问题?

纹理坐标没有必要关联到顶点坐标的xy分量,甚至必须是相同。纹理坐标完全独立
您必须定义 2 维纹理如何包裹在 3 维 space 的表面上。对于立方体的每一面,您都必须定义单独的纹理坐标。

更改纹理坐标。例如:

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