不符合2的幂次方尺寸的OpenGL纹理

4

我正在尝试在OpenGL环境中显示一张图片。该图片的原始尺寸为3648x2432,我想用256x384的图像来显示它。问题是,384不是2的幂,当我尝试显示它时,它看起来被拉伸了。我该如何解决这个问题?

4个回答

3

我知道三种方法可以实现这个目标 -

  • 使用阿尔伯特建议的方法(调整大小直到适合)。
  • 将纹理细分为2 ** n大小的矩形,并以某种方式拼接它们。
  • 看看是否可以使用GL_ARB_texture_non_power_of_two。 不过最好避免使用它,因为它看起来是一个Xorg特定的扩展。

选项2很棒 - 防止失真。 - Frank Krueger

2

您可以调整纹理大小,使其成为2的幂次方(扭曲纹理,使其在映射到对象时看起来正确)。


我认为纹理总是2的幂次方,因为硬件无论如何都会使用相同数量的资源。但我可能是错误的。 - Albert

0

ARB_texture_rectangle 可能是你正在寻找的。它允许你绑定到 GL_TEXTURE_RECTANGLE_ARB 而不是 GL_TEXTURE_2D,并且你可以加载具有非2次幂尺寸的图像。请注意,你的纹理坐标将从 [0..w]x[0..h] 范围而不是 [0..1]x[0..1]。


0
如果GL_EXT_texture_rectangle为真,则在glEnable()和GLBindTexture()调用中的第一个参数中使用GL_TEXTURE_RECTANGLE_EXT。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接