Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: CptGervais le Août 02, 2013, 09:28:08 pm

Titre: Problème du carré blanc
Posté par: CptGervais le Août 02, 2013, 09:28:08 pm
CObjet::CObjet()
{
    if(!ImageBMP.loadFromFile("ressources/Images.bmp"))
    {
            ImageBMP.createMaskFromColor(Color(0,128,0));
    }
if(!texture.loadFromImage(ImageBMP))
                cout << "Erreur lors du chargement de la texture \n";

            spriteK[10][10].setTexture(texture);
            spriteK[10][10].setTextureRect(IntRect(0, 0, 65 , 65));
}

Sprite CObjet::getSprite()
{
    return spriteK[10][10];
}

class CObjet
{
    private:
    Sprite spriteK[10][10];
    Texture texture;
    Image ImageBMP;

    public:
    CObjet();
    ~CObjet();
    Sprite getSprite();
};

int main()
{
    RenderWindow window(sf::VideoMode(800, 600), "SFML works!");
    window.setFramerateLimit(40);

    CObjet objet1;

    while (window.isOpen())
    {
        window.clear();
        window.draw(objet1.getSprite());
        window.display();
    }

    return 0;
}
 
Le résultat est dans le titre, j'ai tester plusieurs valeurs pour l et c, toujours le carré blanc. Mais je ne comprends pas pourquoi  la Texture est détruite alors qu'elle est instanciée.
PS:Je n'ai pas mis les includes pour épurer
Titre: Re : Problème du carré blanc
Posté par: Laurent le Août 02, 2013, 09:59:57 pm
Simplifie ton code, là il y a trop de trucs superflus sans rapport avec l'erreur.
Titre: Re : Problème du carré blanc
Posté par: CptGervais le Août 02, 2013, 10:23:01 pm
Fait. Apparemment le problème viendrait du fait que j'utilise un tableau de Sprite, sinon ça marche.
Titre: Re : Problème du carré blanc
Posté par: Laurent le Août 02, 2013, 10:45:41 pm
Citer
Sprite CObjet::getSprite()
{
    return spriteK[10][10];
}

Là tu renvoies le sprite n° [10][10], qui n'existe bien entendu pas puisque le dernier élement de ton tableau est [9][9].
Titre: Re : Problème du carré blanc
Posté par: CptGervais le Août 02, 2013, 11:04:24 pm
Belle erreur de ma part, désolé. En changeant ce détail ça marche en effet. Mais le code d'origine plante toujours, j'ai du mal isoler la partie qui ne va pas. Le carré blanc me faisait penser à la durée de vie des textures mais c'est peut être pas ça...
Titre: Re : Problème du carré blanc
Posté par: Laurent le Août 02, 2013, 11:07:10 pm
Même erreur là :

            spriteK[10][10].setTexture(texture);
            spriteK[10][10].setTextureRect(IntRect(0, 0, 65 , 65));
Titre: Re : Problème du carré blanc
Posté par: CptGervais le Août 03, 2013, 11:45:16 am
C'est bon, mon code fonctionne mais je n'ai pas vraiment compris pourquoi. L'orignal étant beaucoup plus complexe, y a un truc qui devait faire foirer le reste. Merci quand même !