-
Bonjour.
Dans mon projet, j'essaye de faire comme selon le tutoriel pour dessiner une carte grâce à un tableau de vertex (http://Les médias gratuits pour le développement 2D/3D/Jeux), 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.
-
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);
-
Ç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". ::)