【发布时间】:2010-09-26 16:07:28
【问题描述】:
我正在尝试在 openGL 环境中显示图片。图片的原始尺寸是 3648x2432,我想用 256x384 的图像显示它。问题是,384 不是 2 的幂,当我尝试显示它时,它看起来被拉伸了。我该如何解决?
【问题讨论】:
我正在尝试在 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]。
【讨论】:
如果 GL_EXT_texture_rectangle 为真,则在 glEnable() 和 GLBindTexture() 调用中的第一个参数使用 GL_TEXTURE_RECTANGLE_EXT。
【讨论】: