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

Auteur Sujet: VertexArray et plantage  (Lu 1418 fois)

0 Membres et 1 Invité sur ce sujet

mazertys17

  • Full Member
  • ***
  • Messages: 123
    • Voir le profil
    • E-mail
VertexArray et plantage
« le: Novembre 18, 2014, 10:30:55 am »
Bonjour.

J'ai quelques problèmes avec VertexArray. Lorsque je crée une nouvelle image dans un objet, et que je lui change ses coordonnées de vertex lors du jeu, il plante. Pourtant, j'ai crée avant cela un vector du même objet, qui fonctionne à merveille dans le même cas...J'ai beau tourner la situation dans tous les sens...je me retrouve avec un message d'erreur dès que j'essaye d'animer l'image et de lui envoyer de nouvelles coordonnées. Alors que cette même image, s'affiche bien à la base.

Voici mon entitée d'image, qui jusque là marche bien (notez que j'ai essayé d'utiliser VertexArray *ptrVertex en pointeur, comme avec la texture, mais sans résultat...est-ce normal?)

mon entitée image:


class EntiteImage : public sf::Drawable
{
public:


    friend struct MonFoncteur;

int value;

    virtual void recoitVertexArray(sf::VertexArray vertexArray)
    {
        m_vertexArray = vertexArray;
    }
    void recoitVertexArrayEtTexture( sf::VertexArray vertexArray, sf::Texture *texture)
    {
        m_vertexArray = vertexArray;
        m_texture = texture;
    }
    void recoiZ(float z)
    {
        m_z = z;
    }

protected:

    virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
    {
        states.texture = m_texture;
        target.draw(m_vertexArray, states);

    }

    float m_z;

    sf::VertexArray m_vertexArray;
    sf::Texture *m_texture;
};

 

Voici le code utilisé dès que j'active l'animation ainsi: (ca marchait jusque là pour toutes les images)




void ImageAnime::recoitTemps(Controles *controles)
{

    if(controles->renvoiTemps())
    {
        m_compteurX++;
    }

    if (m_compteurX >= m_tailleTexture/m_tailleImage)
    {
        m_compteurX = 0;
        m_compteurY++;
    }
    if(m_compteurY >=m_tailleTexture/m_tailleImage)
    {
        m_compteurY =0;
    }


     m_vertexArrayRelais.setPrimitiveType(sf::Quads);
     m_vertexArrayRelais.resize(4);
     m_vertexArrayRelais[0] = sf::Vector2f (m_x,m_y);
     m_vertexArrayRelais[1] = sf::Vector2f (m_x+m_tailleImage,m_y);
     m_vertexArrayRelais[2] = sf::Vector2f (m_x+m_tailleImage,m_y+m_tailleImage);
     m_vertexArrayRelais[3] = sf::Vector2f (m_x,m_y+m_tailleImage);

     m_vertexArrayRelais[0].texCoords = sf::Vector2f (m_compteurX*m_tailleImage , m_compteurY*m_tailleImage );
     m_vertexArrayRelais[1].texCoords = sf::Vector2f (m_compteurX*m_tailleImage + m_tailleImage , m_compteurY*m_tailleImage );
     m_vertexArrayRelais[2].texCoords = sf::Vector2f (m_compteurX*m_tailleImage + m_tailleImage , m_compteurY*m_tailleImage + m_tailleImage );
     m_vertexArrayRelais[3].texCoords = sf::Vector2f (m_compteurX*m_tailleImage , m_compteurY*m_tailleImage + m_tailleImage );

    m_entiteImage.recoitVertexArray(m_vertexArrayRelais);
    m_entiteImage.recoiZ(m_y+m_tailleTexture/2);



}

 

et enfin, le message d'erreur du débug:


In sf::RenderTarget::draw (this=0x28fc70, vertices=0x943970, vertexCount=4, type=sf::Quads, states=...) at D:\developpement\sfml\sfml


Voila. Bien sur, je continue a chercher de mon côté jusqu'a trouver une solution. Cependant peut être avez vous une idée sur la provenance de ce problème qui semble venir de la SFML...

Merci

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : VertexArray et plantage
« Réponse #1 le: Novembre 18, 2014, 05:45:27 pm »
au premier coup d'oeil , les paramètres de tes méthodes sont foireuse , un coup tu utilises des pointeurs , d'autre fois non, tu n'a pas l'air de savoir ce que tu fait.

Un conseil , avant de te lancer dans ton jeu de puzzle isométrique tout seul , apprend le C/C++ , du moins les bases, on croirais que tu veut construire une maison en attaquant en premier le papier peint.

mazertys17

  • Full Member
  • ***
  • Messages: 123
    • Voir le profil
    • E-mail
Re : VertexArray et plantage
« Réponse #2 le: Novembre 18, 2014, 06:20:20 pm »
Merci pour votre réponse.

Quand on veut, on peut.

En effet, je débute en c++. Et j'apprend un peu plus chaque jour. Je sais très précisément ou j'ai envie d'aller.

Si j'utilise pas les pointeurs pour VertexArray, c'est simplement parce-que j'ai essayé et que ça ne marche pas...Je me suis donc cantonné a les créer en dure, me disant qu'il s'agit d'objet légers ne contenant que des coordonnés , qui pourront donc être copiés sans peser...contrairement aux textures, qui doivent impérativement être des pointeurs.
J'aurais bien aimé, donc, créer mes VertexArray en pointeur...Mais, sauf erreur, ce n'est pas étudié pour. (mais je me trompe peut être et c'est pour ca aussi que je poste sur le forum).



« Modifié: Novembre 18, 2014, 06:25:34 pm par mazertys17 »