4

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

4

4 回答 4

3

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

  • 阿尔伯特建议的那个(调整大小直到适合)。
  • 将纹理细分为 2**n 大小的矩形,并以某种方式将它们拼凑在一起。
  • 看看能不能用GL_ARB_texture_non_power_of_two。不过最好避免使用它,因为它看起来像是 Xorg 特定的扩展。
于 2008-12-12T16:54:08.600 回答
2

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

于 2008-12-12T16:46:22.033 回答
0

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

于 2008-12-12T17:01:57.633 回答
0

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

于 2008-12-23T20:08:17.963 回答