Bonjour,
Je travaille sur une TileMap qui peut être (ou pas) isométrique.
Ma classe TileMap hérite de Drawable et Transformable.
Mes Tiles sont de parfaits carrés (à la base), j'essaye donc de les modifier pour les afficher en isométrique (2.5D)
-> rotate(45)
-> scale(1,0.5)
(Je ne veux pas affecter ma vue, juste le rendu du VertexArray)
Voici sans plus tarder, ma fonction draw :
void TileMap::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
if(mTexture != nullptr) // mTexture est du type : std::shared_ptr<sf::Texture>
states.texture = &(*mTexture);
if(mIsometric) // mIsometric est un booleen qui indique si le VertexArray est isométrique ou non
{
sf::Transform t0, t1, t2;
t0.translate(200,50); // Juste pour le rendu sur ma screenshot qui vient
t1.rotate(45); // Première transformation
t2.scale(sf::Vector2f(1,0.5)); // Deuxième
states.transform *= getTransform() * t0 * t1 * t2;
}
else // Si le VertexArray n'est pas isométrique
{
states.transform *= getTransform();
}
target.draw(mBackground,states);
}
Vous le verrez dans le code précèdent ou dans la screenshot suivante, mon rendu n'est pas celui escompté.
Mon VertexArray est tourné et rétréci en même temps, ce qu'il fait que je me retrouve avec des rectangles inclinés et non des losanges comme je les voulais...
Voici la fameuse scrennshot en pièce jointe
Merci d'avance