134 votes

Dessiner du texte dans OpenGL ES (Android)

Je suis en train de développer un petit jeu pour la plateforme Android de OpenGL et je me demande si il existe un moyen facile pour restituer le texte sur le dessus de l’image restituée (comme un HUD avec le player´s marquer etc.). Le texte aurait besoin d’utiliser une police personnalisée aussi. J’ai vu un exemple d’utilisation d’un affichage en surimpression, mais je ne sais pas si je veux faire cela puisque je pourrais vouloir port le jeu à d’autres plates-formes plus tard. Toutes les idées ?

Cordialement / par

168voto

JVitela Points 1336

Rendu de texte à une texture est plus simple que ce que la démo de Sprite texte rendent ressemble, l’idée de base consiste à utiliser la classe Canvas pour restituer à un Bitmap et passez ensuite le Bitmap à une texture OpenGL :

106voto

Dave Points 4346

Le SDK Android n'est pas venu avec une façon facile de dessiner du texte sur OpenGL points de vue. Vous laissant avec les options suivantes.

  1. Placez un TextView sur votre SurfaceView. C'est lent et mauvais, mais la mesure la plus directe.
  2. Rendre les chaînes communes aux textures, et il suffit de dessiner ces textures. C'est de loin la plus simple et la plus rapide, mais le moins souple.
  3. Rouler le rendu du texte et du code sur la base d'un sprite. Probablement le deuxième meilleur choix si 2 n'est pas une option. Un bon moyen d'obtenir vos pieds mouillés, mais notez que bien qu'il semble simple (et fonctions de base), il est plus difficile et plus difficile que vous ajouter plus de fonctionnalités (la texture de l'alignement, de traiter avec des sauts de lignes, de largeur variable polices etc.) - si vous prenez cette route, il est aussi simple, comme vous pouvez vous en sortir avec!
  4. Utiliser une étagère/bibliothèque libre. Il y a un peu de monde autour si vous cherchez sur Google, le problème est de les amener intégrée et en cours d'exécution. Mais au moins, une fois que vous faites cela, vous aurez toute la souplesse et la maturité qu'ils fournissent.

37voto

free3dom Points 4024

J'ai écrit un tutoriel qui se développe sur la réponse posté par JVitela. Fondamentalement, il utilise la même idée, mais au lieu de rendre chaque chaîne à une texture, il rend tous les caractères à partir d'un fichier de police à une texture et l'utilise afin de permettre la pleine dynamique de l'affichage de texte, sans plus de ralentissements (une fois l'initialisation terminée).

Le principal avantage de ma méthode, par rapport aux différentes polices atlas des générateurs, c'est que vous pouvez expédier de petits fichiers de polices (.ttf .otf) avec votre projet au lieu d'avoir à expédier de grandes images bitmap pour chaque variation de la police et de la taille. Il peut générer de la parfaite qualité des polices à toute résolution à l'aide de seulement un fichier de police :)

Le tutoriel complet comprend un code qui peut être utilisé dans n'importe quel projet :)

8voto

user379806 Points 116

Selon ce lien:

http://code.neenbedankt.com/how-to-render-an-android-view-to-a-bitmap

Vous pouvez effectuer le rendu d' une Vue à une image bitmap. C'est sans doute la peine d'en supposant que vous pouvez agencement de vue que vous souhaitez (y compris le texte, les images, etc.) et puis le rendre à une image Bitmap.

À l'aide de JVitela du code ci-dessus , vous devriez être en mesure d'utiliser l'image Bitmap comme une texture OpenGL.

7voto

Codehead Points 116

Jetez un oeil à CBFG et le port Android de code de chargement/rendu. Vous devriez être en mesure de déplacer le code dans votre projet et l’utiliser tout de suite.

CBFG - http://www.codehead.co.uk/cbfg

Chargeur Android - http://www.codehead.co.uk/cbfg/TexFont.java

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X