【问题标题】:Clarification needed for opengl texture size requirementsopengl纹理大小要求需要澄清
【发布时间】:2015-09-29 18:22:42
【问题描述】:

我正在开发一款游戏(使用 libGDX,适用于 Windows、Linux 和 Android,基于 OpenGL 2)。我知道 OpenGL 中的纹理大小存在一些技术限制/要求。但我听说过关于这些的相互矛盾的陈述,所以我需要澄清一下:

  • 最大纹理大小:我猜它取决于设备,并且在中途的现代设备上应该节省大约 2048x2048。正确的?这适用于纹理图集还是整个纹理对象?
  • 二次幂:OpenGL 2 支持边缘长度不是二次幂的纹理。但我听说使用这种老式大小的纹理可能更安全。正确吗?
  • 位图大小:加载到游戏中的位图大小(例如player_sprite.png)是否与这个最大纹理大小或这个二次方有关?

【问题讨论】:

    标签: opengl opengl-es libgdx textures


    【解决方案1】:

    最大纹理大小:我想它取决于设备,并且应该在中途的现代设备上保存大约 2048x2048。正确的?这适用于纹理图集还是整个纹理对象?”

    GLES2 规范规定最大纹理尺寸必须为 64x64 或更好。绝大多数 Android 和所有 iOS GLES2 设备都是 2048x2048 或更高的。如果您能够降到 1024x1024,那么您在几乎所有 Android 设备上都是安全的。对于桌面目标,我认为 2048x2048 就可以了。

    二次幂:OpenGL 2 支持边长不是二次幂的纹理。但我听说使用这种老式大小的纹理可能更安全。对吗?

    使用非二次幂纹理需要注意的是,可以限制 mipmapping 和纹理环绕。出于这个原因,我几乎一直使用二次幂纹理。使用纹理图集是提高性能和减少纹理浪费的好方法,因为许多形状不规则的纹理可以组合成一个大的二次幂纹理。

    位图大小:加载到游戏中的位图大小(例如 player_sprite.png)是否与这个最大纹理大小或这个二次方有关?

    不确定我是否理解这个问题。如果您要渲染纹理,那么 png 可能会由引擎加载并放入 OpenGL 纹理中,此时它受制于与 OpenGL 最大纹理大小和二次幂相关的规则。

    【讨论】:

    • 将 2048x2048 视为完全最大 - 超过它时会出现严重问题
    猜你喜欢
    • 2011-11-09
    • 2012-07-18
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2012-06-02
    • 2017-01-18
    相关资源
    最近更新 更多