Я реализую GUI, созданный поверх OpenGL. Я столкнулся с проблемой, что каждый GUI будет иметь - рендеринг текста. Я знаю несколько методов рендеринга текста в OpenGL, однако мне интересно, какой из них лучше всего подходит для графического интерфейса.
Как правило, в графическом интерфейсе мы имеем два типа текста - статические и живые. Static достаточно прост - мы можем сделать TTF текстурой и забыть об этом. Это "живой" текст, который больше беспокоит меня - воображайте консоль или живой чат в многопользовательской игре.
Я подумал о нескольких вариантах:
- никаких особых случаев - визуализировать и загружать текстуру каждый раз, когда текст изменяется, имея в виду только перезаписать его, когда на самом деле появляется новый текст, и пытаться разделить большой текст на мелкие части (например, на линию чата). Однако это все равно оставит нас висящими в таких случаях, как линия оценки, которая меняется все время, или вводный текст, который отображает "на символ" (стиль пишущей машинки, видимый в некоторых научно-фантастических играх).
- quad-per character - это также кажется популярным решением, вы готовите текстуру с таблицей ASCII и визуализируете текстурированный четырехсимвольный символ. Однако у меня есть серьезные сомнения в эффективности такого решения. Советы о том, как сделать это быстрее, также приветствуются.
- гибридные решения - однако я понятия не имею, как реализовать это чисто
Вопрос заключается в том, как эффективно обрабатывать текст в OpenGL?
Если это помогает, я кодирую STL/Boost-heavy С++ и нацеливаюсь на графические карты GForce 6 и более поздние версии.