IMHO Існує три причини використовувати OpenGL ES у грі:
- Уникати різниць між мобільними платформами, використовуючи відкритий стандарт;
- Мати більше контролю над процесом візуалізації;
- Користуватися паралельною обробкою GPU;
Малювання тексту - це завжди проблема в ігровому дизайні, оскільки ви малюєте речі, тому ви не можете мати вигляд спільної діяльності з віджетами тощо.
Ви можете використовувати рамку для створення шрифтів Bitmap із шрифтів TrueType та їх рендерингу. Усі рамки, які я бачив, діють однаково: генерують координати вершин і текстур для тексту за час малювання. Це не найефективніше використання OpenGL.
Найкращим способом є виділення віддалених буферів (вершинних буферних об'єктів - VBO) для вершин і текстур на початку коду, уникаючи операцій з передачею лінивої пам’яті за час малювання.
Майте на увазі, що ігрові гравці не люблять читати текст, тому ви не будете писати довгий динамічно створений текст. Для міток можна використовувати статичні текстури, залишаючи динамічний текст за часом та оцінкою, і обидві мають числовий характер, має кілька символів.
Отже, моє рішення просте:
- Створіть текстуру для загальних етикеток та попереджень;
- Створіть текстуру для чисел 0-9, ":", "+" та "-". Одна текстура для кожного персонажа;
- Створіть віддалені VBO для всіх позицій на екрані. Я можу надати статичний чи динамічний текст у цих позиціях, але VBO - статичні;
- Створіть лише одну текстуру VBO, оскільки текст завжди відображається в один бік;
- За час малювання я виводжу статичний текст;
- Для динамічного тексту я можу зазирнути до позиції VBO, отримати текстуру символу та намалювати його, символ за один раз.
Операції малювання швидкі, якщо ви використовуєте віддалені статичні буфери.
Я створюю XML-файл із положеннями екрана (виходячи з діагоналі екрана) та текстурами (статичні та символи), а потім завантажую цей XML перед візуалізацією.
Щоб отримати високий показник FPS, вам слід уникати генерації VBO під час витягування.