openGL纹理,维度不是2 ^ x

时间:2008-12-12 16:37:15

标签: c++ opengl ldf

我正在尝试在openGL环境中显示图片。图片的origninal尺寸是3648x2432,我想用256x384图像显示它。问题是,384不是2的幂,当我试图显示它时,它看起来很紧张。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

我知道有三种方法可以做到这一点 -

  • 阿尔伯特建议的那个(调整它直到它适合)。
  • 将纹理细分为2个**大小的矩形,并以某种方式将它们拼凑在一起。
  • 看看您是否可以使用GL_ARB_texture_non_power_of_two。尽管如此,最好避免它,因为它看起来像是特定于Xorg的扩展。

答案 1 :(得分:2)

您可以调整纹理大小,使 为2的幂(使纹理偏斜,以便在映射到对象时看起来正确)。

答案 2 :(得分:0)

ARB_texture_rectangle可能就是你要找的东西。它允许您绑定到GL_TEXTURE_RECTANGLE_ARB而不是GL_TEXTURE_2D,并且您可以加载具有非2次幂的图像。请注意,您的纹理坐标范围为[0..w] x [0..h]而不是[0..1] x [0..1]。

答案 3 :(得分:0)

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