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