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

Auteur Sujet: Carré blanc et changement d'adresse?  (Lu 2058 fois)

0 Membres et 1 Invité sur ce sujet

Thall206

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Carré blanc et changement d'adresse?
« le: Novembre 09, 2016, 01:46:22 am »
Bonjour, je pense que la réponse est simple, mais je ne suis pas sûr de comprendre entièrement mon erreur:

J'ai le problème du carré blanc, à l'affichage d'un sprite, l'erreur vient du fait que l'adresse de la texture bouge (et non détruite).

Dans mon objet (un tiles), on initialise le membre sf::Texture m_texture, qu'on applique directement au membre sf::Sprite m_sprite.
Sauf qu'à l'affichage de ce dit sprite, j'obtiens un carré blanc, l'erreur est vite corrigée si je réinitialise mon sprite dans le getter du sprite.

Ma question est simple: Pourquoi l'adresse de mon membre m_texture bouge d'une fonction à une autre ?(Dans le constructeur, c'est une certaine adresse, et dans mon getter, voire ailleurs, c'est une autre adresse, qui a l'air définitive)

Bien à vous, bonne soirée !

janf

  • Newbie
  • *
  • Messages: 45
    • Voir le profil
Re : Carré blanc et changement d'adresse?
« Réponse #1 le: Novembre 09, 2016, 02:16:16 am »
Hum.. je suis pas sûr de comprendre.

Tu as une classe qui possède un membre sf::Texture ?

Dans ce cas dans le constructeur tu peux charger la texture. Et l'adresse de ce membre n'est pas censée changer. Vérifie que tu ne la passe pas à tes fonctions par copie. Passe un pointeur ou une référence.

Le mieux bien sûr, si tu peux avoir plusieurs objets de la même classe qui utilise la même texture, c'est que le membre soit un pointeur sur sf::Texture*. Comme ça la texture n'est chargée qu'une seule fois.

Thall206

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Carré blanc et changement d'adresse?
« Réponse #2 le: Novembre 09, 2016, 09:55:38 am »
Comment la texture peut-être être chargée qu'une seule fois, si je la charge à chaque constructeur?

Edit: Ok j'ai utilisé un pointeur, et ça marche, et je pense avoir compris pour la question ci-dessus:
m_texture n'est pas initialisé dans le constructeur, on initialise la texture en dehors de l'objet, et on envoie cette texture à chaque initialisation dudit objet. Merci bien !
« Modifié: Novembre 09, 2016, 10:37:24 am par Thall206 »

janf

  • Newbie
  • *
  • Messages: 45
    • Voir le profil
Re : Carré blanc et changement d'adresse?
« Réponse #3 le: Novembre 09, 2016, 08:49:28 pm »
Yep, une texture ça prend pas mal de place en mémoire et c'est long à charger, alors il faut la charger une seule fois pour tous les sprites qui l'utilisent. Tu en viendras rapidement à te coder un petit gestionnaire de textures (ou a en utiliser un déjà fait, y'a pas de honte à ne pas réinventer la roue si ça t'intéresse pas de le coder toi-même).
« Modifié: Novembre 09, 2016, 08:51:10 pm par Renardesque »