Bonjour,
Je code actuellement un jeu, et je fais une classe pour gérer toutes les textures. Voila un code qui doit charger une texture et la donner à un sprite.
#include "graphic_manager.hpp"
int main()
{
sf::RenderWindow app(sf::VideoMode(680, 680, 32), "Titan");
app.setFramerateLimit(60);
Graphic_Manager lolilol;
lolilol.loadTexture("mario.png");
sf::Sprite sprite(lolilol.getTexture(("mario.png")));
while (app.isOpen())
{
sf::Event event;
while(app.pollEvent(event))
{
switch(event.type)
{
case sf::Event::Closed:
app.close();
break;
default:
break;
}
}
// Remplissage de l'écran (couleur noire par défaut)
app.clear();
app.draw(sprite);
// Affichage de la fenêtre à l'écran
app.display();
}
return EXIT_SUCCESS;
}
Problème, au moment du rendu je n'ai qu'un carré de blanc de la taille de l'image, que je voulais charger. J'avais pensé à une texture détruite mais j'ai quand même quand même la bonne taille et je ne vois pas d'erreur dans le code de ma classe.
Voila une partie du code de ma classe graphic_manager.
#include "graphic_manager.hpp"
Graphic_Manager::Graphic_Manager() : m_texture(), m_map(NULL)
{}
/*
-----------------------------------------------------------
Gestion des ressources
-----------------------------------------------------------
*/
bool Graphic_Manager::loadTexture(std::string chemin, bool oblige)
{
if(oblige == false)
{
std::map<std::string, sf::Texture>::iterator trouve = m_texture.find(chemin);
if(trouve == m_texture.end())
{
sf::Texture texture;
if(texture.loadFromFile(chemin))
{
m_texture[chemin] = texture;
std::cout << "ok";
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
else
{
sf::Texture texture;
if(texture.loadFromFile(chemin))
{
m_texture[chemin] = texture;
return true;
}
else
{
return false;
}
}
}
sf::Texture Graphic_Manager::getTexture(std::string chemin)
{
std::map<std::string, sf::Texture>::iterator trouve = m_texture.find(chemin);
if(trouve == m_texture.end())
{
std::cout << "pas ok";
return sf::Texture();
}
else
{
std::cout << "ok"
return m_texture[chemin];
}
}
m_texture étant un attribut de ma classe std::map<std::string, sf::Texture> m_texture;
J'ai testé, j'ai bien "okok" dans la console, mes fonctions se terminent correctement je ne comprends pas... Et ce n'est pas l'image, si je la charge de manière "normale" dans le main, elle s'affiche.
Pouvez vous m'aider ?
Merci