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 .