OpenGL纹理:错误映射到2D多边形

时间:2016-09-08 13:18:15

标签: opengl textures texture-mapping

当我尝试在2D多边形上映射纹理时,注意到OpenGL(nVidia卡)的意外行为。图像似乎被“打破”成2件:

Broken texture on 2D polygon

这是源纹理:

the source texture

简化的代码段:

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

这种奇怪效果的原因是什么?我希望看到我的纹理从左向右扩展,白线保持平行。

0 个答案:

没有答案