Рендеринг строки в текстуру в Android и OpenGL ES
Я везде гуглил, но не могу найти ничего для рендеринга строк в текстуры и последующего отображения этой текстуры на квадроцикле на экране. Может ли кто-нибудь рассказать о процессе или предоставить хорошие ресурсы, которые описывают, как это сделать? Является ли рендеринг строк для текстур даже лучшим способом отображения текста в приложении Android OpenGL ES?
РЕДАКТИРОВАТЬ: Хорошо, поэтому LabelMaker мешает альфа-смешиванию, текстура (созданная из PNG с прозрачным фоном) теперь имеет сплошной черный фон, а не прозрачный фон. Если я закомментирую весь код, связанный с LabelMaker, он будет работать нормально.
ОБНОВЛЕНИЕ: Неважно. Я взглянул на код и обнаружил, что LabelMaker отключал смешивание после рисования меток.
2 ответа
Если вы не хотите использовать расширения GL, вам нужно создать шрифт как растровое изображение, а затем создать класс для преобразования этой строки в квадраты, которые вы можете нарисовать.
Я использую этот метод с двумя шрифтами в моей игре. У меня есть класс, который принимает широкую текстуру со всеми буквами, расположенными равномерно, и строку, соответствующую изображению, а затем использует поиск по буквам, чтобы выяснить, как далеко в растровом изображении он должен идти.
Другой вариант - визуализировать текст в закадровом растровом изображении с помощью Android, а затем связать текст как текстуру. Это позволит вам использовать встроенную обработку и рендеринг шрифтов в android для создания текстурных шрифтов.
Второй метод, который я еще не использовал, но я рендерил карты Google на внеэкранный холст, а затем привязал растровое изображение как текстуру GL, поэтому сделать это для текста должно быть намного проще.
Если вы планируете модифицировать строковые данные в цикле gl, вам нужно по-настоящему беспокоиться и о StringBuilder, поскольку он вызывает проблемы с сборкой мусора и производительностью. Я жестко кодирую все свои строки, чтобы они не распределялись, и все мои быстрые числа выполняются с помощью второй функции рисования, предназначенной для рисования изменяющихся чисел без использования строителя строк.