2011-07-13 29 views
1

我想將字體字形圖像打包成單個紋理。位圖是每個像素單色1字節,我希望將它們全部打包到1個紋理上。我能夠計算所需的最小紋理大小,但我無法管理算法將它們全部打包在一起。包裝位圖

我目前有位圖存儲爲字符指針,我能夠得到每個的尺寸。

+0

是你的字形都是一樣的字體大小? –

+0

「每個像素單色1字節」,你的意思是每個像素1 **位**? –

+0

另外,「紋理」是什麼意思?你只是指一個大的圖像? –

回答

2

我不是在裝箱的專家,但這裏有一個簡單的算法,你可以嘗試。

  1. 從高到低排列字形。最高的字形將首先放置。
  2. 設H爲下一個最高未放置的字形的高度。
  3. 通過添加水平高度H垂直地展開您的紋理。
  4. 用剩餘的字形(最高到最短)填充關卡,直到下一個字形沒有剩餘空間。
  5. 轉到#2

這被稱爲Next-Fit Decreasing Height (NFDH)算法。互動演示可見here

由於您的字形或多或少具有相同的高度,我認爲這種簡單的算法應該會給您帶來好的結果。

查看此survey更多算法。

+0

謝謝,這似乎很有用。 – Wunkolo