Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Cmdu76 le Septembre 23, 2014, 11:32:28 pm

Titre: [Résolu] Problème application de sf::Transform sur VertexArray
Posté par: Cmdu76 le Septembre 23, 2014, 11:32:28 pm
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 :)
Titre: Re : Problème application de sf::Transform sur VertexArray
Posté par: Laurent le Septembre 24, 2014, 08:06:50 am
Essaye d'inverser l'ordre des transformations.
Titre: Re : Problème application de sf::Transform sur VertexArray
Posté par: Cmdu76 le Septembre 24, 2014, 04:39:49 pm
Merci, ça marche maintenant, sujet résolu :)