Мне нужно расширить систему рендеринга OpenGL для поддержки международных символов (особенно иврита, арабского и кириллицы).
Платформа разработки - Windows (XP | Vista | 7), увы, использующая Embercardero Delphi 2010.
В настоящее время я использую wglOutLineFont (...) для построения списка отображения моего шрифта и glCallLists(length(m_Text), UNSIGNED_SHORT, PWchar(m_Text) )
для рендеринга моих строк.
Хотя это возможно для символов Latin-1, создание полного набора символов Юникода заранее занимает довольно много времени (около 8,5 минут на моем компьютере), поэтому я ищу более эффективное решение. Я думал об ограничении диапазона от u + 0020 - u + 077f (латиница, греческий, кириллица, арабский и иврит), чтобы включить только те глифы, которые мне нужны, но это было бы просто решением для моих текущих потребностей, и однажды его станет недостаточно другое кодирование необходимо.
С другой стороны, мне не нужно беспокоиться о направлении слева направо или справа налево, поскольку наше приложение уже может справиться с этим.
Я ожидаю, что это будет хорошо известная проблема, поэтому я хотел бы спросить, есть ли какие-либо справочные материалы по этому вопросу в Интернете, или вы могли бы поделиться некоторой информацией об этом?
Редактировать
Уточнение: я использую полигональные представления шрифтов. Каждый шрифт заранее создается с размером блока (1,0) и соответствующим образом масштабируется с использованием glScalef(...)
перед рендерингом. Я решил отказаться от предварительного растеризации, поскольку пользователи могут увеличивать масштаб достаточно близко (приложение используется для САПР), поэтому растровые артефакты станут видимыми.
Кроме того, поскольку длина сцены редко превышает несколько сотен символов (в основном метки и измерения), прирост скорости от предварительной растеризации незначителен.