Я пишу текстовый рендерер для приложения OpenGL. Размер, цвет, грань шрифта и сглаживание могут быть изменены во время выполнения (и, таким образом, несколько шрифтовых граней могут появляться на экране одновременно). Слишком много комбинаций, чтобы выделить одну текстуру для каждой комбинации строки и атрибутов. Однако в любой момент времени на экране будет отображаться только небольшое подмножество всей базы данных строк.
Это приводит меня к возможности создать кеш для строк, которые печатаются кадр за кадром. Было предписано, что я использую только одну текстуру для всей операции, поскольку создание кэша из многих текстур повлечет за собой штраф за замену текстуры для каждой отдельной строки, напечатанной из кэша.
Итак, передо мной текстура 2048x2048, в которую я могу помещать любые строки, которые могу вписать, так как они запрашиваются приложением для целей кэширования. Я быстро понял, что отслеживание свободного пространства, доступного в двухмерном пространстве, не тривиально.
Я смотрел на такие вещи, как Best Fit и Next fit, но, похоже, они подходят для 1d пробелов.
Как мне управлять этой текстурой кеша в OpenGL?
Редактировать: С тех пор я узнал, что это пример "проблемы с 2d упаковкой".