Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [SFML 2.0 RC] Problème fluidité causé par sf::Text  (Lu 3177 fois)

0 Membres et 1 Invité sur ce sujet

Syntax Error

  • Newbie
  • *
  • Messages: 40
    • Voir le profil
[SFML 2.0 RC] Problème fluidité causé par sf::Text
« le: Décembre 22, 2012, 10:34:52 pm »
Bonjour,

J'ai commencé et bien avancé la création d'un pacman.
J'utilise sf::Text afin d'afficher le score.
Pour cela je converti un compteur entier en string, puis je place au fur et à mesure dans un tableau de sprite de 309 cases (puisqu'il y a un maximum de 309 points à atteindre dans le niveau de mon pacman), les sprite contenant le score à afficher.

La mise à jour du score ne pose aucun problème d'affichage (le score s'affiche correctement), mais les pacman/fantômes ne sont plus fluides du tout.

En bref :
Si je met cette ligne :
vm_tableauScore[vm_compteur] = vm_spriteScore;

Les déplacements ne sont plus fluides.
Si je l'enlève, les déplacements sont à nouveau fluides.


Auriez-vous une idée ?
Merci d'avance.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.0 RC] Problème fluidité causé par sf::Text
« Réponse #1 le: Décembre 22, 2012, 10:37:44 pm »
Ca va être difficile de t'aider avec si peu d'informations et de code.
Laurent Gomila - SFML developer

Syntax Error

  • Newbie
  • *
  • Messages: 40
    • Voir le profil
Re : [SFML 2.0 RC] Problème fluidité causé par sf::Text
« Réponse #2 le: Décembre 22, 2012, 10:52:46 pm »
        vm_compteur++;

        vm_textureScore.create(100, 60); //vm_textureScore est de type sf::RenderTexture
        vm_textureScore.clear(sf::Color::Black);

        vm_texteScore.setFont(vm_font); //vm_font correspond à la police utilise pour le texte
        vm_texteScore.setColor(sf::Color::White); //couleur de la police...

        std::string str; // Conversion du compteur
        std::ostringstream oss;
        oss << vm_compteur;
        vm_texteScore.setString(oss.str());

        vm_textureScore.draw(vm_texteScore); //Texte à afficher.
        vm_textureScore.display();

        sf::Sprite spriteScore(vm_textureScore.getTexture());
        spriteScore.setPosition(800,20);

        vm_tableauScore[vm_compteur] = spriteScore;

        vm_tableauMapEntier[y][x] = 15; //me permet de savoir si la case à déjà été visité
        vm_spriteTileSet.setTextureRect(sf::IntRect(15*tailleX, 0, tailleX, tailleY));
        vm_spriteTileSet.setPosition(x*tailleX, y*tailleY);
        vm_tableauMapSprite[y][x] = vm_spriteTileSet;

        app.draw(vm_tableauMapSprite[y][x]); // mise à jour map
        app.draw(pacman.fm_getPersoSprite()); // mise à jour pacman
        app.draw(vm_tableauScore[vm_compteur]); //mise à jour score

EDIT : Ce code est dans une condition et correspond aux instructions me permettant d'afficher le score.
« Modifié: Décembre 22, 2012, 10:54:27 pm par Syntax Error »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.0 RC] Problème fluidité causé par sf::Text
« Réponse #3 le: Décembre 22, 2012, 11:13:53 pm »
Et tu fais ça à chaque tour de boucle ? Pourquoi stockes-tu le sprite de score dans un tableau ? Pourquoi affiches-tu le score indirectement, en faisant un pré-rendu dans une texture ?

Je ne connais pas ton code, il faut m'aider un peu en m'expliquant ce que tu fais, si tu veux que je puisse t'aider.
Laurent Gomila - SFML developer

Syntax Error

  • Newbie
  • *
  • Messages: 40
    • Voir le profil
Re : [SFML 2.0 RC] Problème fluidité causé par sf::Text
« Réponse #4 le: Décembre 23, 2012, 08:39:07 am »
Au départ j'avais encore moins de fluidité quand je faisais draw (sf::Text).
Et on m'avait dit que draw(sf::Text) était lente.
Du coup l'idée c'était de précharger les chiffres sous forme de tableau de sprite et au moment de l'affichage faire un draw(sf::Sprite) au lieu de draw(sf::Text).

C'est déjà plus fluide grâce à ça, mais c'est toujours légèrement saccadé.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.0 RC] Problème fluidité causé par sf::Text
« Réponse #5 le: Décembre 23, 2012, 09:28:05 am »
Dessiner un sf::Text n'est pas lent. Si tu le reconstruis à chaque tour de boucle (ce qui ne devrait pas être ton cas) c'est déjà un poil plus lent, mais normalement pas de quoi affecter les performances.
Laurent Gomila - SFML developer

Syntax Error

  • Newbie
  • *
  • Messages: 40
    • Voir le profil
Re : [SFML 2.0 RC] Problème fluidité causé par sf::Text
« Réponse #6 le: Décembre 23, 2012, 10:19:18 am »
Je peux t'assurer que ça rendait mon jeu pas fluide, mais alors pas fluide du tout :/

Je ne sais pas pourquoi, peut-être que c'est du à autre chose, mais le faite est que mon jeu était parfaitement fluide quand j'enlever le draw (et pour mon code ici c'est pareil).

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2.0 RC] Problème fluidité causé par sf::Text
« Réponse #7 le: Décembre 23, 2012, 10:44:09 am »
Si tu arrives à reproduire le problème dans un code complet minimal je pourrai jeter un oeil, voir si tu ne fais rien de bizarre.

Sinon, est-ce que tes drivers graphiques sont à jour ?
Laurent Gomila - SFML developer