Afficher plusieurs fois le même sprite avec une condition [SFML]

Signaler
Messages postés
366
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
18 mars 2018
-
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
-
Bonjour,

Comme indiqué dans le titre, je voudrai afficher plusieurs fois le même sprite avec une condition


Pseudo code:



inclure le fichier "data1"



création de la texture "t_hero";
création du sprite "s_hero";

charger la texture "t_hero" depuis le fichier mémoire "g_data1" ;


appliquer la texture "t_hero" à "s_hero";

si le bouton du milieu de la sourie est pressé, alors :

créer une variable sf::Vector2u qu'on appel "positionSourie";
"positionSourie.x" = position de la sourie en abscisse;
"positionSourie.y" = position de la sourie en ordonnée;
afficher un nouveau "s_hero" et le positionner là où se trouve la sourie; //la où je bloque





soit


#include "data1"


sf::Texture t_hero;
sf::Sprite s_hero;

t_hero.loadFromMemory(g_data1, sizeof(g_data1));


s_hero.setTexture(t_hero);


if(sf::Mouse::isBottonPressed(sf::Mouse::middle)
{
           sf::Vector2u positionSourie;
           positionSourie.x = sf::Mouse::getPosition().x;
           positionSourie.y = sf::Mouse::getPosition().y;
           //le fameux code qui génère une x ième fois le même sprite               //je bloque içi
          /*le x ième*/ s_hero.setPosition(positionSourie.x, positionSourie.y);    //et là
}




Or, je ne vois pas comment afficher plusieurs fois le même sprite. J'ai entendu parler des vertexArray dans SFML mais apparemment il vaut mieux avoir TOUTES les textures dans une même image, et perso je n'aime pas utilisé ce genre de truc. Il y a t'il un autre moyen (si oui, comment ?) ou je dois faire avec vertexArray ?

Merci de vos réponses.


(Dîtes-moi si il est nécessaire de faire un pseudo-code, pour savoir)

4 réponses

Bonjour, même si cela date un peu, ça peut aider les prochains.
Il me semble que l'on peut afficher autant de fois un sprite qu'on le veut.
imaginons :
sprite.setPosition(sf::Vector2f{0, 0});
sprite.draw(window);
sprite.setPosition(sf::Vector2f{250, 250});
sprite.draw(window);
/* Va afficher le sprite deux fois a deux position différentes, je n'ai pas d'IDE de dispo donc je ne sais pas si les fonctions setPosition et draw sont bien orthographiées *\


EDIT : Ajout des balises de code
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
Bonjour
Quand on exhume un question vielle de presque un an, on essaye
Messages postés
5
Date d'inscription
samedi 10 août 2019
Statut
Membre
Dernière intervention
13 août 2019

Salut

Utiliser une série de sprite n'est pas du tout performant pour le dessin d'une map, ça a pour conséquence de multiplier les appels a draw, qui est assez lourd.

Regarde du coté du vertexarray, ca permet de rentrer toutes les données de ta map dans un tableau, et de tous dessiner d'un seul coup.
ps: un vertexarray nécessite d'avoir toutes les tiles a dessiner sur la même texture.
Messages postés
15934
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
545
Bonsoir, la question date de près de 2 ans, et le demandeur n’a pas donné suite il y a un an.
C’est p’tet pas la peine d’user la planète