我试图将纹理应用于立方体的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轴。我该如何解决这个问题?
最佳答案
不必将纹理坐标关联到顶点坐标的x和y分量,甚至不必相同。纹理坐标是完全独立的。
您必须定义二维纹理如何在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();
关于c++ - 在opengl中在z方向上更改将2d纹理应用于单个立方体表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59440677/