LINUX.ORG.RU

Отрисовка текста в OpenGL


0

1

Давеча игрался с этой задачей. В Qt4 использовал сначала QGLWidget::renderText(...), но появляються артефакты, если текст перерисовывается в одном и том же месте на плоскости и к Qt4 привязано(ещё и DEPTH_TEST отключает на миг, как сказано в доках).
Естественно, есть FTGL, но это шибко сильно для вывода текстовых меток где-либо. Может SDL уместен тоже, но не знаком с этим.
В гугле нашел очень хороший пример решения проблемы путем генерации текстуры из заведомо заданного шрифта:

http://www.mgix.com/snippets/?GLQuickText

Пишеться, что код «is in public domain», может и можно использовать в open source программах, или своё что-то аналогично написать.
Я, было дело, написал небольшую функция для отрисовки текста геометрическими 2D фигурами и в итоге вышло нечто убогое, естественно, о чем потом и прочел в интернетах.
Код работает шустро, понятны исходники, 300 строк кода — реализация, а другие 4000 — числовые данные моноширинного шрифта :), поэтому на радостях решил поделиться ссылкой с теми, кто с таким сталкивался и сам не додумался это так реализировать.
Буду также рад любым советам!

у меня было как-то так. в результате небольшой велосипед поверх FreeType замечательно справился с задачей

jtootf ★★★★★
()

разные тропинки ведут к одной вершине:

1. Получить от freetype/Qt строку в виде растра, отрисовать как текстуру. 1.1 У них же получить растр в виде bitmap, нарисовать glBitmap-ом

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

Все вышесказанные подходы гуглятся на ура. У NeHe есть несколько вариантов, кстати.

nikitos ★★★
()
Ответ на: комментарий от nikitos

Спасибо за советы

Здесь http://www.sjbaker.org/steve/omniv/opengl_text.html
пишется, что растровые шрифты генерированные путём glBitmap нельзя трансформировать в пространстве(хотя мне пока и не надо).

Можно-ли с помощью того же freetype2 сделать текстурированную надпись, как в ранее указанном примере?

blinkenlichten
() автор топика
Ответ на: комментарий от jtootf

Кстати, о half-life source

http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnif...

Я-то не собираюсь использовать движок сорс, это слишком :), но всеравно красиво.
И они не врут, HL2 работал кое-как(15-20 fps) на PentiumIII 1GHz, ATI Radeon 9200 video.

blinkenlichten
() автор топика
Ответ на: комментарий от buddhist

Это отличная штука, но для моей задачи(когда допишу хоть ещё немного поделю кодом и всем-всем, а пока не буду давать повода насмешкам :)) хватает текстурированных или glBitmap'нутых шрифтов, остановился на первом варианте, потому, что может пригодиться разворачивание текста на 90грд., к примеру.

blinkenlichten
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.