Partage
  • Partager sur Facebook
  • Partager sur Twitter

Texture SFML

Sujet résolu
    17 mars 2019 à 14:21:15

    Salut, 

    J'ai une classe Personnage qui renvoie un sprite SFML auquel j'ai setTexture une texture que je renvoie via une méthode.

    Mon problème c'est que en faisant remonter mon sprite via des méthodes la texture disparait et le fameux problème du carré blanc apparait mais sur le tuto de sfml il y'a peut de chose pour contrer ce problème.

    Il y'a t'il des gens qui aurait des pistes ?

    -
    Edité par GwendalBernardi 17 mars 2019 à 15:35:17

    • Partager sur Facebook
    • Partager sur Twitter
      17 mars 2019 à 17:57:08

      Hello, et si tu nous montrait ton code ? :)

      Je pense que c'est un soucis de reference.

      • Partager sur Facebook
      • Partager sur Twitter

      Architecte logiciel - Software craftsmanship convaincu.

        18 mars 2019 à 12:24:01

        C'

        est ici que j'affiche mes sprites :

        void Fenetre::AffichageSpriteGraphiques(std::vector<Conteneur> tableau)
        {
        	for (int w = 0; w < tableau.size(); w++)
        	{
        		// On récupère les valeurs du Conteneur
        		positionSpriteADessiner = tableau[w].getPosition();
        		spriteADessiner = tableau[w].getSprite();
        
        		// On associe le sprite et la position
        		spriteADessiner.setPosition(positionSpriteADessiner[0], positionSpriteADessiner[1]);
        
        		// On pose la texture sur le sprite.
        		spriteADessiner.setTexture(tableau[w].getTexture());
        
        		spriteADessiner.setScale(xScale, yScale);
        		// Enfin on dessine le sprite sur la fenetre :
        		window.draw(spriteADessiner);
        	}
        }

         Et ce que je mets dans le tableau de conteneur c'est ça :

        // Le constructeur permet de coller la texture au sprite
        BodyPersonnage::BodyPersonnage()
        {
        	Body.loadFromFile("../Ressources/Images/index.jpg");
        }
        
        BodyPersonnage::~BodyPersonnage()
        {
        }
        
        // Cette méthode permet de renvoyer le conteneur du corps.
        Conteneur BodyPersonnage::getConteneur(int x, int y)
        {
        	std::vector<int> positionBody{ x,y };
        	Conteneur conteneurBody(SBody, positionBody,Body);
        	return conteneurBody;
        }

        J'ai essayé de rajouter la texture dans mon conteneur (qui sert juste de tableau avec plusieurs type dedans en gros) mais ça ne marche pas non plus avant je faisais le setTexture directement dans mon constructeur de BodyPersonnage

        SBody étant un sprite définit dans mon BodyPersonnage.h positionBody un vector <int> et Body la texture elle aussi définit dans le .h 

        class BodyPersonnage
        {
        public:
        
        	/************* Créateur et de la classe BodyPersonnage **************/
        	BodyPersonnage();
        	~BodyPersonnage();
        
        	// Cette méthode permet de renvoyer le conteneur du bras gauche.
        	Conteneur getConteneur(int x, int y);
        
        private:
        
        	// Sprite et la texture associé au corps.
        	sf::Texture Body;
        	sf::Sprite SBody;
        
        	// Vector contenant la position du sprite du bras gauche
        	std::vector<int> positionBody;
        };

        Merci,

        -
        Edité par GwendalBernardi 18 mars 2019 à 12:32:31

        • Partager sur Facebook
        • Partager sur Twitter
          18 mars 2019 à 14:58:22

          void Fenetre::AffichageSpriteGraphiques(std::vector<Conteneur> tableau)
          Utilise des références (contantes) en paramètre, là tu fais des copies. Et pour les fonction n charge de renvoyer des textures, renvoie également des références (sinon, c'est des copies).
          • Partager sur Facebook
          • Partager sur Twitter
            18 mars 2019 à 15:13:55

            Je ne vois pas trop ce que tu veux dire par référence et copie. Y'a t'il un cours sur OC qui explique cela ?

            Merci pour ta réponse.

            • Partager sur Facebook
            • Partager sur Twitter
              18 mars 2019 à 15:47:07

              Non justement, il n'y a pas de bon cours C++ sur Openclassrooms.

              Regarde sur Zeste de savoir, il y a justement un bon cours de C++.

              • Partager sur Facebook
              • Partager sur Twitter

              Architecte logiciel - Software craftsmanship convaincu.

                18 mars 2019 à 16:19:38

                int fonction_avec_copie(int variable)
                {
                  variable++;
                }
                
                int fonction_par_reference(int &variable)
                {
                  variable++;
                }
                
                int main()
                {
                int var1 = 1;
                int var2 = 1;
                
                fonction_avec_copie(var1);
                fonction_par_reference(var2);
                
                std::cout << var1 << std::endl; // output : 1
                std::cout << var2 << std::endl; // output : 2
                
                return 0;
                }

                Ceci est un exemple de ce qu'il se passe quand on passe une variable par référence ou pas.

                Cependant de meilleurs exemples ici , c'est avec ce lien que j'ai appris et que j'ai compris mais je n'ai pas assez d'expérience pour te dire ce qu'il en est réellement.

                Je te conseille de refaire un tour sur les pointeurs avant de commencer à faire du graphique, ça te sera très utile.

                • Partager sur Facebook
                • Partager sur Twitter
                MsgBox "Ensemble"  &  chr(10)  &  chr(10) & "développons"
                  18 mars 2019 à 16:31:14

                  Ok super merci je vais regarder ça merci !!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 mars 2019 à 16:39:43

                    Hum cours de C/C++, pointeurs nus... À éviter, autant chercher un vrai cours de C++.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs

                    Texture SFML

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown