C++ framework for multimedia software like Games
Wed Nov 09 17:42:12 CET 2011
nb comments: 0

Ma première versions de gestion de String était un peu brouillon :

  • Utilisation d'une bitmap prés-calculé avec un logiciel tierce et avec une configuration nécessaire des positions de chaque caractères.
  • Utilisation du pipeline fixe glBegin(), glEnd() qui est maintenant déprécié.
  • Aucune gestion des styles d'affichages (gras, souligné, italique).

Ce fut l'une des premières améliorations apporté au moteur après avoir finalisé le Zappy.

Génération auto des bitmaps :

Pour générer une font au format ".ttf" j'ai utiliser la lib Freetype, il s'agit d'une librairie open source implémentant un moteur de rendu de police de caractère.
Celle-ci nous permet donc de loader une font ".ttf" et d'en extraire l'ensemble des "Gliph" la composant.

Après avoir extrait chaque "Gliph" avec leur tailles et pixels correspondants, nous n'avons plus qu'a créer un texture (bitmap) de la bonne taille et d'organiser les gliph de sorte a prendre le moins de place possible. (par ordre de grandeur, les grosses pierre en premiers^^) .
Voici donc le résultat avec la même font que le précédant post : arial.ttf

Comme vous pourrez le voir on obtient une texture de qualité, on connaît toute les positions de chaque caractères.
Et en prime on arrive à optimiser les dimensions de la texture :)

Les VBO :

Ceux-ci permettent d'une part d'optimiser le rendu, et d'autre part sont maintenant devenu incontournable depuis que le pipeline direct est déprécié.
De-plus nous sommes également obligé de passer par un Shader pour afficher la moindre strings.

L'affichage de string ce fait plus ou moins de la même façon, en affichant de simples rectangles texturé avec une fonction de blending.

Les Styles graphiques :

Enfin il nous reste encore la gestion des 3 styles de base :
  • Gras             -> On dessine plusieurs fois la même string avec un offset de décalage.
  • Italique        -> On dessine chaque rectangle de chaque caractère avec un offset de décalage (on se retrouve alors avec un parallélogramme).
  • Surligné       -> On dessine un trait sur le dessous des caractères.
Ainsi chacun de ses 3 styles peuvent être très facilement combiné entre eux.
 

Voila j'en ai fini pour les string.
Mon but n’étant pas de faire un tuto, je ne montrerai pas de code, cependant rien ne vous empêche d'aller regarder le code dans la doc Doxygen.

Author: Ponpon
Comments
Pseudo
Add new comment:
Post
Loading...