Атлас шрифтов подписанного поля расстояний - уменьшение размера текстуры - PullRequest
0 голосов
/ 11 июля 2020

У меня есть атлас SDF (8-битная шкала серого) со всеми глифами Arial, который составляет около 16k ^ 2 пикселей. Рендеринг текста работает более-менее нормально, но такая текстура съедает около 256 МБ памяти графического процессора. Графическая система - OpenGL.

Q: Существуют ли какие-либо решения, позволяющие отказаться от использования такой большой текстуры при сохранении возможности визуализации любого символа из шрифта Arial?

Я использую свой собственный реализация автономного генератора SDF, который на самом деле сначала отображает все глифы с помощью WPF, а затем вычисляет SDF с помощью CUDA (наивная реализация с перебором пикселей для расчета занимает около 20 минут, у меня нет навыков для его оптимизации), но из-за этого материала WPF этот подход не является go для генерации атласа на лету для отдельных строк (скорость, D3D9). Генерация даже небольшого SDF на лету на графическом процессоре также не будет потрясающе быстрой и может привести к задержкам в рендеринге.

Я просто хочу избежать использования каких-либо библиотек, таких как FreeType, и в то же время не хочу заканчивать до внедрения всего стандарта TTF - в конце концов, это просто хобби-проект, это не в моих силах.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...