Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Sozary le Mai 27, 2016, 01:18:15 pm

Titre: texture non appliquée
Posté par: Sozary le Mai 27, 2016, 01:18:15 pm
Bonjour,
J'ai une classe Ball et je voudrais appliquer une structure sur cette boule.
Je procède ainsi:
Texture chat;
        chat.loadFromFile("chat.jpg");

        for (int i = 0; i < NB_BALL; ++i)
                m_balls.push_back(Ball(chat)); 
 

et j'ai

Ball::Ball(double size, Color color, Vector2f pos,Texture txt)
{
        m_texture = txt;
        m_ball.setTexture(&m_texture);

        m_ball.setRadius(size);
        m_ball.setFillColor(color);
        m_ball.setPosition(pos);
        m_ball.setOrigin(size , size );

               
}

class Ball : public sf::Drawable
{
public:
        Ball();
        Ball(double size, sf::Color color, sf::Vector2f pos,sf::Texture);
        ~Ball();
        void setBallSize(double size);
        void setColor(sf::Color color);
        void setPos(sf::Vector2f pos);
        sf::Vector2f getPos() const;
private:
        sf::CircleShape m_ball;
        sf::Texture m_texture;
private:
        virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const;
};
 

Or ça ne fonctionne pas...
Merci d'avance
Titre: Re : texture non appliquée
Posté par: Laurent le Mai 27, 2016, 01:21:48 pm
Tu fais plein de copies temporaires de tes textures. Au final le sprite pointe non pas vers celle qui va rester, mais sur l'une de ces copies temporaire qui n'existe déjà plus.
Titre: Re : texture non appliquée
Posté par: Sozary le Mai 27, 2016, 07:23:22 pm
Exact oui! Du coup ou dois je déclarer mes textures?
Titre: Re : texture non appliquée
Posté par: Laurent le Mai 27, 2016, 08:37:58 pm
Ce qui est sûr c'est que chaque balle ne va pas avoir sa propre copie de la même texture. Ce serait du gaspillage. Donc quelqu'un d'autre doit créer et stocker la texture de balle, et leur fournir sous forme de réference pour éviter les copies.