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;
}