Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Archimed78 le Septembre 10, 2012, 03:52:43 pm

Titre: [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 10, 2012, 03:52:43 pm
Bonjour a tous,

J'ai un soucis d'affichage de sf::Text, en faite lors de l'affichage il n'y a que certaine lettre qui s'affiche et pas d'autre, mais ce ne sont pas des caractères spéciaux.

Vu que je suis entrain de créer une usine a gaz, il va être très dur pour moi de vous faire un code minimale pour reproduire se bug, alors je ne demande pas une solution, mais juste une piste de recherche.

Voici la fonction qui met le texte :
void CreeChar::afficherErreur(std::string msg)
{
    std::cout << "TEST ERREUR = " << msg << std::endl;
    m_text_erreur->setString(msg);
    m_text_erreur->setPosition(10, 10);
    std::cout << "TEST ERREUR 2 = " << m_text_erreur->getString().toAnsiString() << std::endl;
}

et la fonction de dessin :
void CreeChar::dessiner()
{
    if (m_text_erreur != NULL) m_fenetre->draw(*m_text_erreur);
}

Et donc a savoir que m_text_erreur est une attribut de la classe et qu'il est initialisé dans le constructeur.

Voici le resultat graphique :
(http://www.heberger-image.fr/data/images/45991_nombredepersonnagemaximumatteint.png)

J'ai donc tester si mes valeur étai bonne dans la console et aucun soucis :
(http://www.heberger-image.fr/data/images/25650_nombredepersonnagemaximumatteintconsole.png)

Merci beaucoup du temps que vous m'accorder.
Titre: Re : [SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 10, 2012, 03:54:56 pm
Aucun message d'erreur de SFML dans la console ? Combien de caractères différents affiches-tu avec des sf::Text, en tout ? Si tu changes la taille des caractères (plus gros ou plus petits), c'est toujours pareil ?
Titre: Re : [SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 10, 2012, 03:58:39 pm
Bon ben effectivement, en changeant la taille des caractères plus de soucis... Merci Laurent mais une petite explication serais pas de refus  ;)
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 10, 2012, 04:15:49 pm
Pour ça il faut répondre à mes autres questions, et aussi me dire si c'est avec une taille plus faible ou plus élevée que ça marche ;)
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 10, 2012, 04:20:28 pm
Ha, désolé  :)

Alors au total il n'y a que ce sf::Text donc uniquement le nombre de caractère de cette chaine.
Et j'ai agrandit de 15 à 25.

Voila voila merci  :D
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 10, 2012, 04:25:36 pm
Tu utilises quelle police ? Tu es sous quel OS ?
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 10, 2012, 04:33:47 pm
La police par défaut pour le moment, et je suis sous Seven.
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 10, 2012, 04:42:44 pm
C'est bizarre. Tu as quoi comme carte graphique ? Ses drivers sont à jour ? Est-ce que dans le reste de ton programme tu charges beaucoup de sf::Texture, ou des sf::Font ?
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 10, 2012, 06:06:41 pm
J'ai une N560GTX (MSI) et les pilotes sont a jour, oui.

En ce qui concerne les sf::Texture, oui pas mal mine de rien et les sf::Font, non du tout.
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 10, 2012, 08:18:41 pm
Combien de textures, et de quelle(s) taille(s) ?
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 10, 2012, 09:54:21 pm
14 de environ 6ko, en 220*35 et une 177ko en 390*1024  :)
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 10, 2012, 10:55:39 pm
C'est pas si énorme. Et puis de toute façon, si ça marche en augmentant la taille des caractères, ça n'a pas de rapport en fait.

Tu n'as pas de thread dans ton programme ?
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 11, 2012, 03:40:26 pm
En faite en augmentant j'arrive toujours a ces bugs graphique, certaine chaines passe bien, d'autre pas du tout  :(

Sinon oui, il y a un Thread.
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 11, 2012, 03:59:18 pm
Citer
Sinon oui, il y a un Thread.
Ah >:(
C'est pour ça que les codes minimaux sont indispensables, on loupe toujours les détails importants sinon.

Est-ce que ce thread a quoique ce soit à voir avec la création ou le dessin des sf::Text ?
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 11, 2012, 05:09:05 pm
Ce Thread n'est que l’écoute réseau. Il reçoit le message et demande de modifié le texte du sf::Text. Cela n'a rien a voir avec le dessin de celui ci. Mais j'ai pourtant bien vérifié dans ma console, le texte correspond bien a ce que j’attends. Je ne crois pas qu'il s'agit d'un problème de Thread car au pire vu le nombre de dessin par secondes, même si au 1er tour de boucle il n'y a pas tout le texte, au second ou troisième il y a de forte chance que le texte soit affiché complétement. Peut-être que je me trompe  ;D
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 11, 2012, 06:56:54 pm
Si, c'est exactement ça le problème.

Si tu inclues <SFML/OpenGL.hpp>, appelle glFlush() juste après text.setString (et lies à opengl32 pour que tou ça fonctionne), ça devrait régler le problème. Il y a eu exactement le même problème il y a quelques jours sur le forum (sûrement côté anglais).
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 11, 2012, 08:03:31 pm
Effectivement, bravo Laurent c’était bien cela.  ;D

Une petite explication ?  :P

Merci pour ton aide en tout cas !
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Laurent le Septembre 11, 2012, 08:10:18 pm
Quand tu fais un setString, en interne les caractères qui n'ont pas encore été rencontrés sont chargés à la volée et la texture interne de ton sf::Font est mise à jour. Mais OpenGL est une API asynchrone : les commandes sont mises en attente et exécutées uniquement lorsque le driver juge que c'est le bon moment. Or comme chaque thread utilise un contexte OpenGL différent, ils ne voient pas ce qui se passe dans l'autre. Donc ton thread de dessin n'a pas vu que la texture du sf::Font a été mise à jour, et continue à afficher le texte avec la texture pas à jour. glFlush permet simplement de forcer le driver à exécuter toutes les commandes OpenGL en attente.

Je sais pas si c'est clair, mais là je pourrai pas faire mieux :P
Titre: Re : [Résolu][SFML2] Problème affichage sf::Text
Posté par: Archimed78 le Septembre 11, 2012, 08:24:58 pm
Oui c'est tout a fait clair, merci beaucoup pour ton aide. Sujet clos !