当我尝试在2D多边形上映射纹理时,注意到OpenGL(nVidia卡)的意外行为。图像似乎被“打破”成2件:
这是源纹理:
简化的代码段:
GLuint textId;
glGenTextures( 1, &textId );
glBindTexture( GL_TEXTURE_2D, textId );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, img.width(), img.height(), 0, GL_BGRA, GL_UNSIGNED_BYTE, (void*)img.bits() );
glEnable( GL_TEXTURE_2D );
glBegin( GL_TRIANGLE_FAN ); // the same effect for GL_QUADS
glTexCoord2d( 0.0, 0.0 );
glVertex2d( -0.5, -0.3 );
glTexCoord2d( 1.0, 0.0 );
glVertex2d( 0.5, -0.8 );
glTexCoord2d( 1.0, 1.0 );
glVertex2d( 0.5, 0.8 );
glTexCoord2d( 0.0, 1.0 );
glVertex2d( -0.5, 0.3 );
glEnd();
这种奇怪效果的原因是什么?我希望看到我的纹理从左向右扩展,白线保持平行。