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

Auteur Sujet: [RESOLU]Récuperé le sf::VertexArray d'un sf::Text  (Lu 2777 fois)

0 Membres et 1 Invité sur ce sujet

Varden

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
[RESOLU]Récuperé le sf::VertexArray d'un sf::Text
« le: Janvier 13, 2014, 04:21:29 pm »
Bien le bonjour/bonsoir.

J'aimerai me faire une classe qui puisse puisse représenté tout ce qui peut etre "dessiné", afin de pouvoir stocker dans un tableau ce que la boucle d'affichage doit dessiner dans la fenetre. je me suis dit que le mieux serai de stocker des sf::VertexArray, mais je ne voit aucune methode pour recuperé l'attribut "m_vertices" de sf::Text. et comme ce membre est private, je ne peut utiliser l'héritage.
Est-ce que je doit faire un copier coller de la classe sf::Text dans une classe personnalisé, puis modifier le "private" en protected? ou simplement rajouter une methode qui permette de récuperer une reference vers ce sf::VertexArray? ou bien encore dssiner le sf::Text dans une sf::RenderTexture pour au final stocker des textures? cette derniere version me semble lourde...

Voila, si vous avez des idées, des éclaircissements, etc;;;, je vous en serai reconnaissants.
Bonne journée a vous.
« Modifié: Janvier 14, 2014, 08:37:32 pm par Varden »

kimci86

  • Full Member
  • ***
  • Messages: 127
    • Voir le profil
Re : Récuperé le sf::VertexArray d'un sf::Text
« Réponse #1 le: Janvier 13, 2014, 09:44:47 pm »
Bonsoir,

Pourquoi ne pas stocker un tableau de pointeurs sur des sf::Drawable tout simplement ?
C'est bien tout ce qui peut être dessiné comme son nom l'indique.
De plus on peut très bien concevoir des entités pouvant être dessinées sans pour autant qu'elle ne contienne de sf::VertexArray.

Varden

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
Re : Récuperé le sf::VertexArray d'un sf::Text
« Réponse #2 le: Janvier 13, 2014, 09:57:27 pm »
J'y ai penser, mais si je fait cela, je n'aurai acces qu'à la methode "draw()" de sfDrawable, et non pas de celle redéfinie par l'une de ses filles, donc aucun acces aux élément a dessiner, cela ne fera rien...ou alors je loupe quelque chose.

mon but serai de résumé tout ce que la sfml peut dessiner a un élément commun. et que ce soit des shape, sprite, ou Text, tous donnent des vertex a draw(). donc le plus simple ne serait-il pas de ne stocker que des vertexArray?

mais si je me trompe, je te pris de m'éclairer d'avantage.

cob59

  • Newbie
  • *
  • Messages: 21
    • Voir le profil
Re : Re : Récuperé le sf::VertexArray d'un sf::Text
« Réponse #3 le: Janvier 14, 2014, 02:10:07 pm »
Bonjour,

J'y ai penser, mais si je fait cela, je n'aurai acces qu'à la methode "draw()" de sfDrawable, et non pas de celle redéfinie par l'une de ses filles, donc aucun acces aux élément a dessiner, cela ne fera rien...ou alors je loupe quelque chose.

En effet, tu loupes que sf::Drawable::draw() est une méthode virtuelle :)
http://cpp.developpez.com/faq/cpp/?page=virtual#CLASS_fonction_vituelle

C'est donc bien la méthode définie dans sa classe fille (sf::Text::draw) qui sera appelée, même si le pointeur ne semble désigner qu'un sf::Drawable.
D'ailleurs le fait que sf::Drawable::draw() soit virtuelle pure (=0) interdit d'appeler cette méthode telle quelle.
Il n'y a donc pas grand chose à craindre.

Varden

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
Re : Récuperé le sf::VertexArray d'un sf::Text
« Réponse #4 le: Janvier 14, 2014, 08:29:15 pm »
Ok, je vais tester, dans ma tête, je pensai qu'il me faudrai créer des pointeurs de type fille pour pouvoir appeler la version fille de la methode virtuelle, et que créer des pointeurs de type parent n'appelerai que la version parent de la methode... et en plus elle est virtuelle pure.
sa simplifierai bien les choses en effet.

edit: je vient d'essayer, un simple "std::vector<sf::Drawable*>" et je lui ai ajouter via un push_back(), une classe personnalisé qui héritait de sf::Drawable, et j'ai appeler sf::RenderWindow.draw() en fournissant l'objet pointer, et sa passe crème.... j'y avait penser pourtant, mais j'était persuader que cela ne fonctionnerai pas. merci a vous deux.
« Modifié: Janvier 14, 2014, 08:36:45 pm par Varden »

 

anything