Какой лучший способ визуализировать много текста с OpenGL - PullRequest
0 голосов
/ 09 октября 2019

Я работаю над программным обеспечением, которому нужно печатать много текстов на экране, около 200–400 строк и множество уникальных символов (некоторые объекты представлены символом), программа уже рисует много вещей, используяOpenGL. Я уже работал с рендерингом текста, и я могу отрисовывать текст, но рисование более 200 строк с использованием 200 вызовов отрисовки приводит к проблеме производительности.

Программное обеспечение рисует только в 2D.

Важно отметить, что я работаю на 32-битном компьютере со старой видеокартой, я не могу использовать более свежую версию OpenGL, чем 2.0.

Какие, по вашему мнению, были бы лучшие варианты?

  1. Рендеринг всего за один вызов отрисовки для каждого шрифта, используя один большой буфер со всей информацией.

  2. Рендеринг каждой строки в текстуре и затем одно рисованиевызов для каждой строки. (текст не сильно меняется, максимум каждую секунду)

  3. Любая другая идея?

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Поскольку OpenGl не поддерживает визуализацию шрифтов на экране, программист может определить систему.

Freetype - хорошая библиотека для рендеринга шрифтов.

https://www.freetype.org/

Вы можете рендерить текстуру шрифтов в Quads или Make Font Atlas, а затем рендерить их в Quads

Как правило, 200 строк не должны быть сложными, но вы можете проверить методы, такие как поля расстояния со знаком.

Это хороший учебник для визуализации шрифтов в opengl.

https://learnopengl.com/In-Practice/Text-Rendering

0 голосов
/ 09 октября 2019

Из того, что я узнал, стандартный подход заключается в создании текстуры атласа шрифта. Это место, где вы можете растеризовать глифы и сохранить координаты uv растеризованных глифов в справочной таблице. Затем пакетируйте вершины и рисуйте весь текст за один вызов рисования, используя одну текстуру (ваш атлас) и имея один буфер для всех позиций вершин.

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

...