跳转到内容

纹理打包优化

学习如何使用先进的装箱算法将字形高效地打包到纹理图集中,以实现最佳的字体渲染和内存使用。

纹理打包是字体资源创建中的关键步骤,它将字形高效地排列到单个图像文件(称为纹理图集)中。SnowB BMF 利用先进的装箱算法来自动化此过程,确保您的字体字形紧凑排列,以节省内存并提高渲染性能。

SnowB BMF 提供两种主要的纹理打包模式,让您可以优先考虑内存效率或特定的输出尺寸。

自动打包模式会智能地确定容纳所有字形的最小纹理尺寸。它采用动态尺寸调整算法并结合二分搜索来找到最紧凑的排列方式。

  • 主要优点: 自动最小化纹理内存使用。
  • 工作原理: 计算所需的最小纹理区域,并禁用手动尺寸设置(宽度、高度、固定尺寸),以保证最佳尺寸。
  • 最适用于: 将最小化内存占用作为首要任务的通用场景。

当您需要遵循特定的纹理约束时,例如为了更好的 GPU 性能而使用 2 的幂次方的尺寸,请使用固定尺寸模式。此模式仅在禁用自动打包时激活。

  • 主要优点: 确保纹理尺寸一致,非常适合有特定渲染要求的平台。
  • 设置:
    • 宽度/高度: 定义纹理图集的最大尺寸。
    • 固定尺寸复选框: 强制输出纹理严格匹配这些尺寸。
  • 最适用于:
    • GPU 性能: 使用 2 的幂次方的尺寸(例如 256x256、512x512、1024x1024)以提高渲染速度和内存处理效率。
    • 平台限制: 满足需要特定纹理尺寸的游戏引擎或渲染框架的要求。

SnowB BMF 的核心使用断头台装箱算法(Guillotine Bin Packing),这是一种高效排列矩形字形的方法,能最大限度地减少空间浪费。该算法速度足够快,可用于实时预览,并支持动态和固定两种纹理尺寸。

启用自动打包后,一个额外的优化层会使用二分搜索来迭代寻找最紧凑的正方形尺寸,然后再应用断头台算法,从而确保最终的纹理图集尽可能小。

  • 优先使用自动打包以最大程度地节省内存。
  • 使用固定尺寸并设置为 2 的幂次方(例如 512、1024)以获得最佳的 GPU 渲染性能。
  • 调整间距: 在最小化间距和防止字形相互渗透之间找到平衡。
  • 字形无法容纳: 如果在固定尺寸模式下字形打包失败,请尝试增加纹理尺寸、减少字形数量或切换到自动打包模式。
  • 内存使用率高: 使用自动打包以确保纹理尺寸最小。

通过理解和利用这些纹理打包功能,您可以创建出在各种应用中都表现出色的高度优化的位图字体。