Текстуры текстур с помощью пользовательских шрифтов OpenGL ES - PullRequest
2 голосов
/ 10 сентября 2010

Имея небольшой опыт работы с Opengl (или opengl), я надеялся, что кто-нибудь может помочь мне с этим.

Я создаю приложение opengl es, и я хотел бы иметь возможность динамически создавать текстмоих кнопок и т. д.

2 очевидные причины этого:

- быть модульным (быстро изменять текст без использования Photoshop)

- иметь возможность добавлятьПозже языки внизу

может кто-нибудь указать мне на учебник или, по крайней мере, дать мне основные шаги / функции для:

  • создавать текстуры из текста

  • загрузка пользовательских шрифтов для отображения текстовых текстур с выбранным пользовательским шрифтом

  • указывает, могу ли я использовать это для загрузки кандзи?

С уважением

Джейсон Роджерс

Ответы [ 2 ]

3 голосов
/ 11 сентября 2010

Я не знаю, является ли это лучшим способом, и я не делал этого раньше ... но вот как я бы это сделал:

  • Создание объекта Paintкоторый будет описывать внешний вид текста.
  • Установите необходимые параметры для шрифта (Paint.setTypeFace()), размера (Paint.setTextSize()), цвета и т. д.
  • Измерьте размер требуемогорастровое изображение, используя Paint.getTextBounds() и строку, которую вы хотите нарисовать.
  • Создайте новое растровое изображение этого размера, используя Bitmap.createBitmap(), убедитесь, что в нем есть альфа-компонент.
  • Создайте холст, используярастровое изображение, которое вы создали для рисования, используя new Canvas(bitmap).
  • Нарисуйте текст в растровое изображение: Canvas.drawText(), используя созданный вами объект рисования и нужную вам строку.
  • Масштабируйте растровое изображение, используяBitmap.createScaledBitmap() будет следующим большим размером как степень 2 в x и y.У меня есть удобная функция (округление до степени 2) для этого, если вам это нужно.
  • Привязка, установка параметров текстуры и загрузка растрового изображения в gl, используя GLUtils.texImage2D()
  • Нарисуйте квад/ спрайт с использованием текстуры;масштабируйте соответствующим образом, используя измеренные размеры текста.

Конечно, если вы хотите предварительно создать композицию фона кнопки / текста кнопки, вы можете вместо этого использовать холст для рисования на фоне.

Я предполагаю, что независимо от того, какие шрифты android поддерживает, Canvas.drawText () будет поддерживать использование соответствующих настроек Paint, то же самое должно относиться к строковым символам (кандзи или другим), которые вводятся в него.Это будет легко узнать, поэкспериментировав, как только вы запустите и запустите метод, описанный выше.

Надеюсь, это было несколько полезно.Ура, Аерт.

2 голосов
/ 20 сентября 2010

В нашем приложении мы решили нарисовать HUD (кнопки, значки, текст), используя XML-макет Android вместо OpenGL ES.

Для этого было несколько причин:

  • все функции XML-макета и элементов управления доступны "из коробки"
  • проще обрабатывать нажатия и поворот экрана
  • не нужно создавать / изменять размер текстуры
  • встроенная поддержка папки ресурсов (на нескольких языках)

Для этого вам просто нужнодобавить GlSurfaceView в качестве дочернего вида к основному виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...