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

有帮助吗?

解决方案

据我所知,有三种方法可以做到这一点 -

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

其他提示

您可以调整你的纹理所以它的的二的幂(这样,当它被映射到它看起来是正确的物体扭曲你的纹理)。

ARB_texture_rectangle可能是你在找什么。它可以让你绑定到GL_TEXTURE_RECTANGLE_ARB代替GL_TEXTURE_2D,并且可以加载具有幂的2个非尺寸的图像。注意,您的纹理坐标范围从[0..w]×[0..h]代替[0..1]×[0..1]。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top