我对opengl中的一些纹理有一个奇怪的问题:
该场景由一个开放的盒子组成,该盒子由 4 个带纹理的二次曲面(地板和 3 个墙壁)和一些由 gluSpheres 制成的粗蘑菇组成,这些蘑菇分别经过平移、缩放和纹理处理。
如果你专门看地板,你会发现有一半的二次曲面的纹理严重扭曲,我已经三次检查了地板的纹理坐标,它们似乎没有任何问题(如你所见,其他三堵墙很好,它们的图案与地板相同)。我使用的任何纹理都会发生这种情况(我只是使用 RAW RGB 数据)。
我把蘑菇从场景中拿出来,翘曲就消失了,这真的很奇怪。有没有人见过这个?我对opengl比较陌生,所以当我看到这个时我不知道要寻找什么。提前致谢。
编辑:
盒子代码:
void drawRoom(void) {
glPushMatrix();
glScalef(10,10,10);
GLuint texture = LoadTextureRAW("cave_two.raw",1);
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
//Floor
glVertex3f(-1,-1,-1); glTexCoord2f(0,0); glNormal3f(0,1,0);
glVertex3f(1,-1,-1); glTexCoord2f(1,0); glNormal3f(0,1,0);
glVertex3f(1,-1,1); glTexCoord2f(1.0,1.0); glNormal3f(0,1,0);
glVertex3f(-1,-1,1); glTexCoord2f(0.0,1.0); glNormal3f(0,1,0);
//Back wall
glVertex3f(-1,-1,-1); glTexCoord2f(0,0); glNormal3f(0,0,1);
glVertex3f(1,-1,-1); glTexCoord2f(1,0); glNormal3f(0,0,1);
glVertex3f(1,1,-1); glTexCoord2f(1.0,1.0); glNormal3f(0,0,1);
glVertex3f(-1,1,-1); glTexCoord2f(0.0,1.0); glNormal3f(0,0,1);
//Right wall
glVertex3f(1,1,1); glTexCoord2f(0,0); glNormal3f(-1,0,0);
glVertex3f(1,-1,1); glTexCoord2f(1,0); glNormal3f(-1,0,0);
glVertex3f(1,-1,-1); glTexCoord2f(1.0,1.0); glNormal3f(-1,0,0);
glVertex3f(1,1,-1); glTexCoord2f(0.0,1.0); glNormal3f(-1,0,0);
//Left wall
glVertex3f(-1,1,1); glTexCoord2f(0,0); glNormal3f(1,0,0);
glVertex3f(-1,-1,1); glTexCoord2f(1,0); glNormal3f(1,0,0);
glVertex3f(-1,-1,-1); glTexCoord2f(1.0,1.0); glNormal3f(1,0,0);
glVertex3f(-1,1,-1); glTexCoord2f(0.0,1.0); glNormal3f(1,0,0);
glEnd();
glDisable(GL_TEXTURE_2D);
glDeleteTextures( 1, &texture );
glPopMatrix();
}