【问题标题】:Why does opengl only render correctly if texture sizes are powers of 2?为什么只有纹理大小是 2 的幂时,opengl 才能正确渲染?
【发布时间】:2014-01-28 02:05:42
【问题描述】:

当我使用 slick-util 加载纹理并使用 lwjgl 的 opengl 渲染它时,除非纹理的长度和宽度都是 2 的幂,否则它会高度失真。这是为什么?

【问题讨论】:

  • 旧 OpenGL 和旧硬件仅限于 po2 纹理,因为它更容易平铺或混合纹理(用于空间一致性)。见fgiesen.wordpress.com/2011/01/17/texture-tiling-and-swizzling
  • 所以没有真正的解决方法?
  • 总有解决办法。您应该使用几何图形、扭曲以及可能显示您的 uv 的代码来显示和图像。该问题可能与对非 po2 纹理的支持无关。
  • 你在 lwjgl 中使用什么类来使用 GL 功能?
  • @a.lasram:也就是说,OpenGL-2 及更高版本不再有这个限制。

标签: java opengl lwjgl slick


【解决方案1】:

我的猜测是,您的解包对齐设置不正确。默认对齐方式为 4 个字节。 2 尺寸图像的力量通常可以满足这一要求。

尝试在调用glTexImageglTexSubImage 之前添加调用glPixelStorei(GL_UNPACK_ALIGNMENT, 1) 会发生什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多