1

我正在尝试将字体字形图像打包到单个纹理中。位图是每像素单色 1 个字节,我希望将它们全部打包到 1 个纹理上。我能够计算出所需的最小纹理大小,但我无法管理一种算法将它们打包在一起。

我目前将位图存储为 char 指针,并且能够获取每个位图的尺寸。

4

2 回答 2

2

我不是装箱方面的专家,但这里有一个您可以尝试的简单算法。

  1. 按从高到低的顺序排列字形。最高的字形将首先放置。
  2. 令 H 为下一个最高的未放置字形的高度。
  3. 通过添加高度 H 水平垂直扩展纹理。
  4. 用剩余的字形(从最高到最短)填充关卡,直到没有空间留给下一个字形。
  5. 转到#2

这称为下一次拟合递减高度 (NFDH)算法。可以在这里看到一个交互式演示。

由于您的字形或多或少具有相同的高度,我认为这个简单的算法应该会给您带来很好的结果。

查看此调查以了解更多算法。

于 2011-07-13T06:15:17.157 回答
1

简单的打包算法可以在这里找到:http: //www.blackpawn.com/texts/lightmaps/

在 Jukka Jylänki 的论文“一千种打包垃圾箱的方法”中,它被称为“断头台包”。

blackpawn.com 上的伪代码非常简单。

类似问题也有相关答案: 将几张图片拼成一张大图

于 2012-04-26T18:50:22.240 回答