Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu]problème avec des LinesStrip  (Lu 1525 fois)

0 Membres et 1 Invité sur ce sujet

psycosium

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
[Résolu]problème avec des LinesStrip
« le: Avril 24, 2016, 12:50:30 pm »
Bonjour à tous,
Je débute en c++ et avec la sfml  ::). Et j'apprends en testant la création d'un mini rpg pour moi même.
Avec l'aide du tuto je me suis déjà construit un éditeur de tilemap  et la je suis sur la partie jeu.

Mon problème est le suivant en voulant tracer des carrés par dessus les tiles avec LinesStrip le rendu laisse apparaitre des diagonales alors que je ne les ai pas demandé  :o



mon code pour la création des carrés est le suivant :


void evenementRPG::gestionMap(){



        for(int y= 0;y <5; y++)
            {
                //cM.getm_Blocage().size(
            for(int x=0;x<5;x++)
                {

                    //cM.getm_Blocage()[y].size()
                    /*********** vetrex*************************/
                    //cM.getm_Blocage()[x].size()
                    //std::cout<<"carre n "<<as.intEnString(y* 5 + x)<< "***************" <<std::endl;

                    sf::Vertex* vArray2 = &m_vertices2[(y* 5 + x)*5];


                    vArray2[0].position = sf::Vector2f(x * tailleTiles ,y * tailleTiles );
                    //std::cout<<"x et a "<<as.intEnString(x * tailleTiles) <<" et y a "<< as.intEnString(y * tailleTiles)<<std::endl;
                    vArray2[1].position = sf::Vector2f((x+1) * tailleTiles, y * tailleTiles);
                    //std::cout<<"x et a "<<as.intEnString((x+1) * tailleTiles) <<" et y a "<< as.intEnString(y * tailleTiles)<<std::endl;
                    vArray2[2].position = sf::Vector2f((x+1) * tailleTiles  , (y+1) * tailleTiles);
                    //std::cout<<"x et a "<<as.intEnString((x+1) * tailleTiles) <<" et y a "<< as.intEnString((y+1) * tailleTiles)<<std::endl;
                    vArray2[3].position = sf::Vector2f(x * tailleTiles, (y+1) * tailleTiles);
                    //std::cout<<"x et a "<<as.intEnString(x * tailleTiles) <<" et y a "<< as.intEnString((y+1)* tailleTiles)<<std::endl;
                    vArray2[4].position = sf::Vector2f(x * tailleTiles  , y * tailleTiles);
                    //std::cout<<"x et a "<<as.intEnString(x * tailleTiles) <<" et y a "<< as.intEnString(y * tailleTiles)<<std::endl;


                    // on définit les quatre coordonnées de texture


                    for (int i=0; i<5 ;i++){

                        vArray2[i].color =sf::Color::Red;
                    }

                }
            }
}
 

et l'affichage :

void evenementRPG::draw(sf::RenderTarget& target, sf::RenderStates states) const
    {

        target.setView(view);

        // on applique la transformation

        //states.transform *= getTransform();

        // on applique la texture du tileset

        //states.texture = &texture;

        // et on dessine enfin le tableau de vertex

        //target.draw(m_vertices, states);
        //states.texture = NULL;

        target.draw(m_vertices2,states);
       // target.draw(cP.getSprite_Perso());
    }

Merci de votre aide, le rendu n'est pas important pour mon projet je veux juste essayer de comprendre.
« Modifié: Avril 24, 2016, 01:33:22 pm par psycosium »

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : problème avec des LinesStrip
« Réponse #1 le: Avril 24, 2016, 01:00:28 pm »
Le dernier vertex d'une tuile est utilisé comme premier vertex de la prochaine tuiles d'ou tes diagonales
sur les extrémités. utilise sf::Lines à la place pour composé ton rendu

http://www.sfml-dev.org/tutorials/2.3/graphics-vertex-array-fr.php

psycosium

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : [Résolu]problème avec des LinesStrip
« Réponse #2 le: Avril 24, 2016, 01:34:52 pm »
Merci cpl.Bator j'ai compris mon erreur et ca marche nickel avec les Lines  ;D