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

Auteur Sujet: Modification pixel par pixel d'un sprite sans texture, possible ?  (Lu 4670 fois)

0 Membres et 1 Invité sur ce sujet

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Bonsoirs,

voila j'aimerai savoir si c'est possible de pouvoir modifié un sf::Sprite pixel par pixel sans que ce dernier possède de sf::Texture ? Imaginons que j'ai un Sprite qui ne possède pas de sf::Texture à qui je lui fait un setColor(). Le sprite pourra donc être représenté à l'écran. Comment faire pour modifier les pixels de ce sf::Sprite ? En effet avant, je dois passer par un sf::Image (obtenue grâce à un sf::Texture) pour modifier les pixels de mon image. C'est sympa c'est vrai mais lors de mon exemple précédent, il n'y a pas de sf::Texture donc je ne peux pas avoir de sf::Image. Comment faire alors ?

Merci d'avance ;) .

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #1 le: Juin 29, 2012, 08:26:28 am »
Un truc composé de pixels, ça reste une texture quoiqu'il arrive, même si tu modifies les pixels toi-même un à un.

Si tu veux faire ça une fois à l'init alors tu peux utiliser sf::Image et sa fonction setPixel, puis Texture::loadFromImage ; si tu veux le faire en temps réel alors il faudra travailler sur un tableau de pixels et utiliser Texture::update.

sf::Uint8 image[width * height * 4];
sf::Texture texture;
texture.create(width, height);
sf::Sprite sprite(texture);

// remplis / modifie "image"

texture.update(image);
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #2 le: Juin 29, 2012, 12:42:57 pm »
Merci, mais pourrais tu expliquer ce qu'est un sf::Uint s'il te plait ? Je ne le trouve pas dans la documentation.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #3 le: Juin 29, 2012, 04:31:59 pm »
C'est un entier non signé de 8 bits. C'est juste un typedef.
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #4 le: Juin 30, 2012, 04:50:37 pm »
Et avec ton code je n'ai pas ce que je veux. Je veux simplement obtenir une texture à partir d'un sprite. Imaginons que mon sprite est obtenue par un setColor, mon sprite aura une couleur (sans blague !!!). J'aurai aimé le retranscrire dans une texture.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #5 le: Juin 30, 2012, 05:58:45 pm »
La couleur du sprite c'est autre chose, ça n'a rien à voir avec la texture. Tu peux toujours l'utiliser quelque soit le contenu de la texture.

Après, si ce que tu veux c'est partir d'une image de couleur plutôt que noire ou blanche, tu peux aussi. C'est pas très compliqué de remplir un sf::Image ou un tableau de pixels avec une couleur unique.

Tu devrais aussi expliquer la finalité de ce que tu cherches à faire, sinon on risque de te donner des pistes non pertinentes ;)
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #6 le: Juin 30, 2012, 06:10:43 pm »
Te souvient tu de la fonction roundEdge poster avant ? Elle récupère la texture d'un sprite et la modifie pixel par pixel pour avoir droit à un arrondie. Si un sprite ne possède pas une texture, je ne pourrai pas appliquer cette fonction puisqu'elle n'a pas de texture.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #7 le: Juin 30, 2012, 07:16:55 pm »
Dans ce cas, génère une nouvelle texture remplie de la couleur du sprite, et applique ta fonction dessus.
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #8 le: Juin 30, 2012, 07:38:52 pm »
Ceci marcherai uniquement si un sprite n'est constitué que d'une couleur ou que d'une texture. Es-ce le cas ? (j'essaye dans ma bibliothèque de recouvrir le plus de cas possible ;) ).

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #9 le: Juin 30, 2012, 08:10:03 pm »
Dans ce cas il suffit de multiplier texture et couleur pour reproduire les pixels finaux.

Ou alors rendre le sprite sur un RenderTexture.
Laurent Gomila - SFML developer

gaulois94

  • Sr. Member
  • ****
  • Messages: 259
    • Voir le profil
Re : Modification pixel par pixel d'un sprite sans texture, possible ?
« Réponse #10 le: Juin 30, 2012, 08:30:20 pm »
Bon ben je crois que je vais devoir utiliser la sf::RenderTexture (que j'aime pas d'ailleurs car assez lent sur mon pc :p ). Merci encore ;) .