跳转到内容

纹理打包:自动、固定与有序网格图集优化

学习如何使用自动打包、固定尺寸和有序网格布局模式将字形高效地打包到纹理图集中,以实现最佳的字体渲染和内存使用。

纹理打包把字形排进纹理图集里。SnowB BMF 用装箱算法自动排列,让字形尽量紧凑,省内存,渲染也更快。

打包模式:自动、固定尺寸与有序网格

Section titled “打包模式:自动、固定尺寸与有序网格”

三种模式,各有侧重。

自动打包算出能装下所有字形的最小纹理尺寸,用二分搜索找最紧凑的排列方案。

  • 优点: 纹理内存自动最小化。
  • 原理: 算最小纹理区域,宽度、高度、固定尺寸这些手动设置都会禁用。
  • 适用场景: 内存优先的通用场景。

需要指定纹理大小时用这个模式,比如 2 的幂次方尺寸对 GPU 更友好。关掉自动打包就进入固定尺寸模式。

  • 优点: 纹理尺寸固定可控,适合有特定要求的平台。
  • 设置:
    • 宽度/高度: 纹理图集的最大尺寸。
    • 固定尺寸复选框: 输出严格按指定尺寸来。
  • 适用场景:
    • GPU 性能: 2 的幂次方尺寸(256x256、512x512、1024x1024)渲染更快。
    • 平台限制: 某些游戏引擎或渲染框架对纹理尺寸有硬性要求。

有序网格把字形摆成整齐的行列网格,不做紧凑装箱。在打包配置面板勾选 Ordered Grid 就行。

  • 优点: 布局整齐,每个字形占一个等大的格子。
  • 列数设置: 启用后 Columns 输入框可用(最小值 1),控制每行多少个字形。
  • 原理: 字形从左到右、从上到下填入网格,格子大小按最大字形算。
  • 适用场景:
    • 精灵图制作: 给需要网格式字形映射的游戏引擎用。
    • 调试和预览: 有序排列下快速检查各字形。
    • 网格式渲染引擎: 依赖固定单元格查找的渲染器。
    • 一致性: 每次导出排列都一样,不受字形数量变化影响。

SnowB BMF 用断头台装箱算法(Guillotine Bin Packing) 排列字形,尽量减少空间浪费。算法够快,实时预览没问题,动态和固定纹理尺寸都支持。

开了自动打包之后,算法先用二分搜索找最紧凑的正方形尺寸,再跑断头台算法,最终纹理图集尽可能小。

  • 先试自动打包,内存占用最低。
  • 固定尺寸选 2 的幂次方(512、1024),GPU 渲染性能更好。
  • 间距别调太小,太小了字形之间可能渗色。
  • 字形装不下: 固定尺寸模式打包失败,加大纹理尺寸、减少字形,或者换回自动打包。
  • 内存占用高: 用自动打包让纹理尺寸降到最小。