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

Auteur Sujet: VertexArray : récupérer la position d'un vertex. (Ne marche pas.)  (Lu 1986 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Salut, il y a un problème avec la classe VertexArray.

voici un code minimal qui reproduit le problème.

#include <SFML/Graphics.hpp>
#include "wall.h"
int main () {
     // création de la fenêtre
    sf::RenderWindow window(sf::VideoMode(800, 600), "My window");
    sf::VertexArray va(sf::Points, 1);
    sf::Vertex vertex;
    vertex.position = Vector3f(100, 100, -1);
    va.append(vertex);
    // on fait tourner le programme tant que la fenêtre n'a pas été fermée
    while (window.isOpen())
    {
        // on traite tous les évènements de la fenêtre qui ont été générés depuis la dernière itération de la boucle
        sf::Event event;
        sf::View view(sf::FloatRect(0, 0, 800, 600));
        //view.move(-400, -300);
        while (window.pollEvent(event))
        {
            // fermeture de la fenêtre lorsque l'utilisateur le souhaite
            if (event.type == sf::Event::Closed)
                window.close();
        }

        // effacement de la fenêtre en noir
        window.clear(sf::Color::Black);

        cout<<"Position : "<<va[0].position.x<<" "<<va[0].position.y<<endl;
        // c'est ici qu'on dessine tout
        window.setView(view);
        window.draw(va);
        // fin de la frame courante, affichage de tout ce qu'on a dessiné
        window.display();
    }

    return 0;
}
 

Ca m'afficher 0, 0 pour la position du vertex, hors que ça devrait m'afficher 100, 100.
J'ai essayé avec toute les versions de la SFML la 2 et la 2.1 que je n'ai pas modifier mais ça ne règle pas le problème.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : VertexArray : récupérer la position d'un vertex. (Ne marche pas.)
« Réponse #1 le: Septembre 28, 2013, 01:56:36 pm »
Citer
Salut, il y a un problème avec la classe VertexArray.
J'ai hésité à ignorer complètement ton post. Mais bon...

A part ça, il s'agit de ta version modifiée de SFML. La prochaine fois pense à poster du code qui utilise une version officielle.

Ensuite le problème : tu initialises ton vertex array avec un élement, puis tu en ajoutes un autre. Résultat, c'est va[1] qui est à la position (100, 100), et va[0] reste à la position par défaut.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : VertexArray : récupérer la position d'un vertex. (Ne marche pas.)
« Réponse #2 le: Septembre 28, 2013, 02:18:26 pm »
Ha d'accord parce que le constructeur de VertexArray me mets des "Vertex vides." quand je mets une taille différente de 0.

Honêtement, je n'aurais jamais pensé cela, moi je pensais que ça le rajoutais à la position 0 et pas à la position 1.


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : VertexArray : récupérer la position d'un vertex. (Ne marche pas.)
« Réponse #3 le: Septembre 28, 2013, 04:14:30 pm »
Ne pense pas, lis la documentation.

Et puis, je ne vois pas l'intérêt de passer une taille initiale au constructeur si ça n'ajoute pas les éléments correspondant. Tu pensais que ça faisait quoi ?

Enfin, c'est le même genre de constructeur que std::vector ou n'importe quel autre conteneur de type tableau. Donc c'est assez habituel.

Bref. Lis juste la documentation la prochaine fois.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : VertexArray : récupérer la position d'un vertex. (Ne marche pas.)
« Réponse #4 le: Septembre 28, 2013, 04:33:25 pm »
Ok.

Sinon oui je connais des cas ou on peut créer des vecteurs ajouter des éléments dedans comme dans d'autres langages qui utilisent toujours des pointeurs. (Et moi même j'utilise tout le temps des vector de pointeur aussi ou j'initialise avec une taille et je rajoute ensuite les éléments dedans.)

Bref, prochaine fois je lirai la doc pour savoir ce que tu fais quand ça ne marchera pas.

 

anything