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

Auteur Sujet: VertexArray déplacer un simple carré  (Lu 2392 fois)

0 Membres et 1 Invité sur ce sujet

Umbre

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
VertexArray déplacer un simple carré
« le: Avril 11, 2016, 09:24:04 pm »
Bonjour !
Je fais des tests pour me familiariser avec SFML. Je suis pas un pro en c++, mais j'ai essayé de déplacer un simple Quads de gauche à droite sur mon écran. Je sais pas pourquoi il avance par "saut" de manière chaotique, alors qu'il n'y a que 4 malheureux vertex. Quand je copie-colle le code du tuto System de particule du site, je peux animer un million de points sans que ca rame. J'ai forcément fait une erreur mais je ne sais pas où.

class Carre: public sf::Drawable
{
public:
    Carre() : monCarre(sf::Quads, 4), position(100, 100), taille(30)
    {
        monCarre[0].position = position ;
        monCarre[1].position = position + sf::Vector2f(0,taille);
        monCarre[2].position = position + sf::Vector2f(taille,taille);
        monCarre[3].position = position + sf::Vector2f(taille,0);
    }
    void calculer_position(sf::Time t, int vitesse)
    {
        position.x += t.asSeconds()*vitesse ;
        monCarre[0].position = position ;
        monCarre[1].position = position + sf::Vector2f(0,taille);
        monCarre[2].position = position + sf::Vector2f(taille,taille);
        monCarre[3].position = position + sf::Vector2f(taille,0);
       
    }
private:
    virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
    {
        target.draw(monCarre, states);
    }

    sf::VertexArray monCarre;
    sf::Vector2f position;
    int taille;
};




int main()
{
    sf::RenderWindow fenetre(sf::VideoMode(1000, 1000), "Mon premier carre");
   
 
   
    Carre dessin;
    int vitesse = 10;
    sf::Clock clock;
   
    while (fenetre.isOpen())
    {
        sf::Event event;
        while (fenetre.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                fenetre.close();
           
            sf::Time temps_passe = clock.restart();
            dessin.calculer_position(temps_passe, vitesse);
           
            fenetre.clear();
            fenetre.draw(dessin);
            fenetre.display();
           
        }
    }
   
    return 0;
}
 

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : VertexArray déplacer un simple carré
« Réponse #1 le: Avril 11, 2016, 11:49:39 pm »
Salut,
Il n'y a que le traitement des événements qui doit être mis dans la boucle while avec le pollEvent.

Umbre

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : VertexArray déplacer un simple carré
« Réponse #2 le: Avril 12, 2016, 12:21:32 am »
Je me sens vraiment pas malin. Tout ca pour une accolade. J'ai du le relire 20 fois sans le voir.
Merci bcp !