IMHO, existem três razões para usar o OpenGL ES em um jogo:
- Evite diferenças entre plataformas móveis usando um padrão aberto;
- Ter mais controle do processo de renderização;
- Beneficiar-se do processamento paralelo da GPU;
Desenhar texto é sempre um problema no design de jogos, porque você desenha coisas, portanto não pode ter a aparência de uma atividade comum, com widgets e assim por diante.
Você pode usar uma estrutura para gerar fontes Bitmap a partir de fontes TrueType e renderizá-las. Todas as estruturas que eu vi funcionam da mesma maneira: gere as coordenadas de vértice e textura para o texto em tempo de desenho. Este não é o uso mais eficiente do OpenGL.
A melhor maneira é alocar buffers remotos (objetos de buffer de vértice - VBOs) para os vértices e texturas no início do código, evitando as operações de transferência de memória lenta no tempo de desenho.
Lembre-se de que os jogadores não gostam de ler texto, portanto, não escreverá um texto longo gerado dinamicamente. Para rótulos, você pode usar texturas estáticas, deixando texto dinâmico por tempo e pontuação, e ambos são numéricos com alguns caracteres.
Então, minha solução é simples:
- Crie textura para etiquetas e avisos comuns;
- Crie textura para os números 0-9, ":", "+" e "-". Uma textura para cada personagem;
- Gere VBOs remotos para todas as posições na tela. Eu posso processar texto estático ou dinâmico nessas posições, mas os VBOs são estáticos;
- Gere apenas um VBO de textura, pois o texto é sempre renderizado de uma maneira;
- Na hora do sorteio, renderizo o texto estático;
- Para texto dinâmico, posso espiar a posição VBO, pegar a textura do personagem e desenhá-lo, um caractere de cada vez.
As operações de desenho são rápidas, se você usar buffers estáticos remotos.
Crio um arquivo XML com posições de tela (com base na porcentagem diagonal da tela) e texturas (estática e caracteres) e carrego esse XML antes da renderização.
Para obter uma alta taxa de FPS, evite gerar VBOs na hora da compra.