Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - b4v

Pages: [1]
1
Ah en effet, je me sens un peu bête maintenant.

Merci!

2
Bonjour,

Je lis actuellement le livre "SFML Game Development" et je me retrouve au niveau du chapitre 2, face à un sprite qui affiche un carré blanc.
Pour être plus précis: Chapter2; Keeping Track of Your Textures – Resource Management; Accessing the textures; page 39.

Après un petite recherche, j'ai pu comprendre qu'un carré blanc proviendrait du fait que le sprite a perdu la référence sur la texture.
Etant un peu rouillé au niveau du C++ après trois ans de web, j'ai beau chercher je flanche et je n'arrive pas à trouver.

Voici dans un premier temps, une partie du .cpp de la class TextureHolder servant à gérer les textures.
La méthode texture->loadFromFile retourne bien true.
sf::Texture& TextureHolder::get(Textures::ID id)
{
        auto    found = this->mTextureMap.find(id);

        return (*found->second);
}

const sf::Texture& TextureHolder::get(Textures::ID id) const
{
        auto    found = this->mTextureMap.find(id);

        return (*found->second);
}

void TextureHolder::load(Textures::ID id, const std::string& filename)
{
        std::unique_ptr<sf::Texture> texture(new sf::Texture());
        texture->loadFromFile(filename);

        this->mTextureMap.insert(std::make_pair(id, std::move(texture)));
}
 

Ensuite, voici le constructeur de la classe Game où la texture est chargée et liée à un sprite.
La variable tDebug m'a permi de voir qu'une texture avec des informations cohérentes est bien renvoyée.
Game::Game()
        : mWindow(sf::VideoMode(640, 480), "SFML Application")
        , mPlayerPlane()
        , mMovementSpeed(MOVEMENT_SPEED)
{
        // Code voulu, non fonctionnel
        TextureHolder textures;
        textures.load(Textures::Airplane, "Media/Textures/Airplane.png");
        //sf::Texture& tDebug = textures.get(Textures::Airplane); // DEBUG
        this->mPlayerPlane.setTexture(textures.get(Textures::Airplane));

        // Code fonctionnel, le path de l'image est correct
        //this->mTexture.loadFromFile("Media/Textures/Airplane.png");
        //this->mPlayerPlane.setTexture(this->mTexture);

        this->mPlayerPlane.setPosition(100.f, 100.f);
}
 
Pour rendre le post plus lisible, j'ai omis une partie du code que je pourrais mettre si besoin est.

Si quelqu'un peut m'aider à comprendre pourquoi le sprite affiche un carré blanc il est bien sûr le bienvenu.

Merci.

PS: J'en profite pour dire bravo pour la SFML, c'est une belle librairie bien documentée avec un forum qui m'a l'air bien actif et compréhensif  :).

Pages: [1]