我正在尝试在OpenGL环境中显示一张图片。该图片的原始尺寸为3648x2432,我想用256x384的图像来显示它。问题是,384不是2的幂,当我尝试显示它时,它看起来被拉伸了。我该如何解决这个问题?
我知道三种方法可以实现这个目标 -
GL_ARB_texture_non_power_of_two
。 不过最好避免使用它,因为它看起来是一个Xorg特定的扩展。您可以调整纹理大小,使其成为2的幂次方(扭曲纹理,使其在映射到对象时看起来正确)。
ARB_texture_rectangle
可能是你正在寻找的。它允许你绑定到 GL_TEXTURE_RECTANGLE_ARB
而不是 GL_TEXTURE_2D
,并且你可以加载具有非2次幂尺寸的图像。请注意,你的纹理坐标将从 [0..w]x[0..h] 范围而不是 [0..1]x[0..1]。