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 - Tinei

Pages: [1]
1
Bonjour, depuis quelque temps j'essaie de coder un petit RPG 2d en C++ avec la SFML, mais je suis malheureusement bloqué à cause d'un gros problème d'affichage: comme vous pouvez le voir sur les captures d'écran suivantes, des choses bizarres s'affichent sur le côté droit et le bas de la map:



Voici la fonction qui affiche les tuiles:
    void TileMap::draw(sf::RenderTarget& target, sf::RenderStates states) const
    {
        // on applique la transformation
        states.transform *= getTransform();

                sf::RenderTexture render;
                render.create(tileSize.x, tileSize.y);

                unsigned int nbrLayers = mapCouches.size();
                std::vector<sf::Sprite> couchesSprites;
                for(size_t layerActuel(0); layerActuel < nbrLayers; layerActuel++)              //Pour chaque couche disponible (layer)
                {
                        sf::Sprite uneCouche; uneCouche.setTexture(tileTexture);
                        couchesSprites.push_back(uneCouche);
                }

                //Préparation au calcul de la position des tuiles dans le tileset
                unsigned int nbrCasesParLigneTileset = tilesetWidth / tileSize.x;
                unsigned int nbrCasesParLigneMap = tailleMap.x / tileSize.x;

                //TEST
                std::ofstream fichier("map.txt", std::ios::out | std::ios::trunc);
                //

                unsigned int nbrCases = mapCouches[0].size();
                for(size_t i = 0; i < nbrCases; i++)                                                                            // Pour chaque case de la première couche
                {
                        //On définit la position du sprite représentant la case actuelle
                        unsigned int positionX(0);
                        unsigned int positionY(0);
                        computePosition(positionX, positionY, nbrCasesParLigneMap, i);
                        tiles->setPosition(positionX * tileSize.x, positionY * tileSize.y);
                                                       
                        for(size_t spriteActuel(0); spriteActuel < couchesSprites.size(); spriteActuel++)
                        {
                                if(mapCouches[spriteActuel][i] != -1)
                                {
                                        unsigned int positionXTileset(0);
                                        unsigned int positionYTileset(0);
                                        computePosition(positionXTileset, positionYTileset, nbrCasesParLigneTileset, mapCouches[spriteActuel][i]);
                                        couchesSprites[spriteActuel].setPosition(0,0);
                                        couchesSprites[spriteActuel].setTextureRect(sf::IntRect(positionXTileset * tileSize.x, positionYTileset * tileSize.y, tileSize.x, tileSize.y));
                                        render.draw(couchesSprites[spriteActuel]);
                                } else if(spriteActuel == 0)
                                {
                                        sf::Sprite sprite1; sprite1.setTexture(tileTexture); sprite1.setTexture(sf::Texture());
                                        sprite1.setColor(sf::Color::Black);
                                        render.draw(sprite1);
                                }
                        }
                       
                        render.display();
                        tiles->setTexture(render.getTexture());
                        target.draw(*tiles, states);
                        render.clear();
                        fichier << i << "; ";
                }
                //TEST
                fichier.close();
                //
    }
 

J'ai l'impression que c'est un problème de renderTexture, mais j'ai vérifié, je l'ai bien créé avec create(), et je n'ai pas oublié de faire display(), ni de faire clear().

Merci d'avance pour votre aide.

Pages: [1]
anything