Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Rodd le Décembre 26, 2012, 02:01:57 am

Titre: [Résolu] Problème de sf::Text et sf::Thread
Posté par: Rodd le Décembre 26, 2012, 02:01:57 am
Bonjour, j'ai un problème au niveau du draw(sf::Text), lorsque ce text est modifié dans un thread, il ne se draw pas bien (il manque tout les chiffres sauf le 0)

En code:
//DANS UN THREAD HORS CLASS
void Updater::downloadFtp()
{
    bar.updatePercentage(100);
}

void ProgressBar::updatePercentage(const float& value)
{
    std::ostringstream stream;
    stream << this->value;
    text.setString(stream.str()+"%");
    std::cout<<text.getString().toAnsiString()<<std::endl; //Affiche toujours les bons chiffres dans la console.

    text.setOrigin((int)(text.getGlobalBounds().width/2),(int)(text.getGlobalBounds().height/2));
    text.setPosition(50+(int)(this->value*5), 63);
}

//C'est la seule modification du text qui existe. :(
// Le seul moment où on appelle le text est pour ce code :

//CODE SE TROUVANT DANS UNE FONCTION DE LA CLASSE ProgressBar
{
     window.draw(text);
}
 

Ainsi on peut lire que les chiffres 0 et le % dans la fenetre ..
Pour 10 -> 0%
Pour 93 -> %
Pour 100 -> 00%
Mais correctement dans la console.

Donc..
- Si j'utilise updatePercentage() dans sa propre classe, tout s'affiche correctement.
- Que j'utilise updatePercentage() avec le thread ou avec la classe, le code : std::cout<<text.getString().toAnsiString()<<std::endl; affiche toujours le bon chiffre dans la console.



Voilà, merci de votre aide, je comprends pas ce que j'ai fais de travers.. :(
Titre: Re : Problème de sf::Text et sf::Thread
Posté par: Laurent le Décembre 26, 2012, 09:45:01 am
Il faut que tu mettes un glFlush() (et donc que tu lies à la bibliothèque OpenGL) après text.setString. C'est un bug connu.
Titre: Re : Problème de sf::Text et sf::Thread
Posté par: Rodd le Décembre 27, 2012, 12:54:10 am
C'était bien ça, merci beaucoup =) ca marche parfaitement.