Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Bl4ckb0ne le Mars 05, 2013, 12:12:15 am

Titre: Passage Image=>Texture=>Sprite
Posté par: Bl4ckb0ne le Mars 05, 2013, 12:12:15 am
Salut à tous.

Je bug sur une partie de fonction; je file le bout de code.

       
        ImageSprite.createMaskFromColor(sf::Color(0 ,255 , 0)); //création du masque de couleur
        sf::Texture TextureSprite; //chargement de l'image dans la texture
        TextureSprite.loadFromImage(ImageSprite); //chargement de l'image dans la texture
        sf::Sprite SpriteSprite(TextureSprite); //chargement de la texture dans un sprite
 

En gros, la fonction reçoit une sf::Image, lui colle un masque de couleur, l'Image est ensuite transformée en sf::Texture, puis en sf::Sprite, afin d'être découpée et collée dans un tableau.
Et l'ennui, c'est que je bug à la destruction de TextureSprite, une fois que SpriteSprite est déclarée et remplis avec la texture.

Et d'autre part, si quelqu'un à une idée pour fais moins compliqué, je suis preneur!

Merci d'avance.
Titre: Re : Passage Image=>Texture=>Sprite
Posté par: Laurent le Mars 05, 2013, 08:35:24 am
Citer
Et l'ennui, c'est que je bug à la destruction de TextureSprite
On a vu mieux comme description de problème ;)

Donc, c'est quoi le souci ? Tu as un problème pour faire quelque chose ? Tu as une erreur ? Un crash ?

Citer
Et d'autre part, si quelqu'un à une idée pour fais moins compliqué, je suis preneur!
C'est pas compliqué. Tu as besoin au final d'un sprite et d'une texture. Mais comme la texture ne peut pas être chargée telle quelle, tu passes préalablement par une image afin de modifier ses pixels. Difficile de faire plus simple que ces 4 lignes de code pour faire tout ça ;)
Titre: Re : Passage Image=>Texture=>Sprite
Posté par: Bl4ckb0ne le Mars 05, 2013, 11:28:42 am
J'ai un soucis avec la texture, devenue useless. J'aimerai la supprimer, mais j'ai jamais eu à faire avec les destructeurs, donc j'ai aucune idée de comment la supprimer.
Titre: Re : Passage Image=>Texture=>Sprite
Posté par: Laurent le Mars 05, 2013, 11:31:41 am
La texture n'est pas devenue inutile, puisqu'elle est affichée par le sprite. Si tu la vires tout ce que tu auras c'est un carré blanc.

Sinon pour répondre à ta question, détruire une texture se fait comme avec n'importe quel objet : lorsqu'elle arrive en fin de portée elle est détruite automatiquement.
Titre: Re : Passage Image=>Texture=>Sprite
Posté par: Bl4ckb0ne le Mars 05, 2013, 10:45:55 pm
Ok, c'est noté, merci.

Sinon, pour les versions futures, il sera possible de faire un masque de couleur sur un sprite ou une texture?
C'est un peu dommage de créer une image juste pour lui faire un masque de couleur et directement en faire une texture =/
Titre: Re : Passage Image=>Texture=>Sprite
Posté par: Laurent le Mars 05, 2013, 10:49:46 pm
Pourquoi dommage ? C'est justement à ça que sert sf::Image, à manipuler les pixels avant de les charger dans un sf::Texture.

Il faut bien comprendre que les pixels de sf::Image se trouvent en mémoire système et peuvent être manipulés librement, alors que les pixels de sf::Texture sont stockés sur la carte graphique et peuvent difficilement être modifiés. Les choix de conception de SFML ne sont pas dûs au hasard, ils correspondent aux contraintes techniques sous-jacentes.
Titre: Re : Passage Image=>Texture=>Sprite
Posté par: Bl4ckb0ne le Mars 06, 2013, 09:04:07 pm
Ok! Tout deviens claire. Je trouvais l'image un peu useless, mais maintenant, je viens de comprendre son principe. Merci