Упаковка растровых изображений - PullRequest
1 голос
/ 13 июля 2011

Я пытаюсь упаковать изображения шрифтов в одну текстуру.Растровые изображения имеют монохроматический 1 байт на пиксель, и я хочу упаковать их все вместе в одну текстуру.Я могу рассчитать минимальный требуемый размер текстуры, но я не могу управлять алгоритмом для упаковки их всех вместе.

В настоящее время я храню растровые изображения в виде указателей на символы и могу получить размеры каждого из них.

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

Я не эксперт в упаковке бин, но вот простой алгоритм, который вы можете попробовать.

  1. Заказ глифов от самых высоких до самых коротких.Самые высокие глифы будут размещены первыми.
  2. Пусть H будет высотой следующего самого высокого неразмещенного глифа.
  3. Расширьте вашу текстуру по вертикали, добавив уровень высоты H.
  4. Заполняйте уровень оставшимися глифами (от самых высоких до самых коротких), пока не останется места для следующего глифа.
  5. Goto # 2

Это называется Next-Подходящий алгоритм уменьшения высоты (NFDH) .Здесь можно увидеть интерактивную демонстрацию здесь .

Поскольку ваши глифы более или менее одинаковой высоты, я думаю, что этот простой алгоритм должен дать вам хорошие результаты.

Проверьтеэто опрос для большего количества алгоритмов.

1 голос
/ 26 апреля 2012

Простой алгоритм упаковки можно найти здесь: http://www.blackpawn.com/texts/lightmaps/

Он называется «Гильотинная пачка» в статье Юкки Юлянки «Тысяча способов упаковать мусорное ведро».

Псевдо-код на blackpawn.com действительно прост.

Есть также похожие ответы на похожие вопросы: Соберите несколько изображений в одно большое изображение

...