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

Auteur Sujet: Soucis avec sf::Drawable  (Lu 2199 fois)

0 Membres et 1 Invité sur ce sujet

zedex

  • Newbie
  • *
  • Messages: 27
    • Voir le profil
Soucis avec sf::Drawable
« le: Février 01, 2014, 10:16:52 am »
Bonjour.

Dans mon projet, j'essaye de faire comme selon le tutoriel pour dessiner une carte grâce à un tableau de vertex, et je voudrait y ajouter des lignes noires pour délimiter chaque cases. Ces lignes sont ajoutées, mais je ne parviens pas à les ajouter dans la fonction draw() :

class Map : public sf::Drawable, public sf::Transformable
{
    public:
        Map();
        ~Map();
        ...        // Quelques fonctions...
    private :
        virtual void draw(sf::RenderTarget&,sf::RenderStates) const;
    protected:
        ...        // Quelques fonctions...
        sf::VertexArray     m_array;        // Lignes de delimitation des cases.
};

void Map::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
    states.transform *= getTransform();
    states.texture = &m_tTileSet;
    target.draw(m_vertices, states);

    draw(m_array);      // Je voudrais dessiner mes lignes ici, mais la fonction n'est pas reconnue.
}

Je pense que le problème est tout bête, mais là je sèche.

Merci.

kimci86

  • Full Member
  • ***
  • Messages: 128
    • Voir le profil
Re : Soucis avec sf::Drawable
« Réponse #1 le: Février 01, 2014, 11:22:02 am »
Bonjour,

draw est une méthode de RenderTarget.
De plus, il faut passer en paramètre le RenderStates pour que la transformation et la texture choisies soient prises en compte.

target.draw(m_array, states);

PS
Tu as besoin dans ton cas d'appliquer uniquement la transformation à ton VertexArray. Pour cela, il suffit de passer states.transform en paramètre à draw.
target.draw(m_array, states.transform);
« Modifié: Février 02, 2014, 05:37:37 pm par kimci86 »

zedex

  • Newbie
  • *
  • Messages: 27
    • Voir le profil
Re : Soucis avec sf::Drawable
« Réponse #2 le: Février 01, 2014, 11:36:49 am »
Ça marche merci !
Oui effectivement j'avais compris qu'il fallait passer un truc dans ce genre, mais je passait :
target.draw(m_array, states);
au lieu de
target.draw(m_array, states.transform);
De plus comme je n'ai pas vraiment compris les RenderStates et Transform, cette partie est un peu codé en "Ho ça marche ? Bon on n'y touche plus".  ::)