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

Auteur Sujet: Manipulation de shapes et optimisation  (Lu 2745 fois)

0 Membres et 1 Invité sur ce sujet

actuenligne

  • Full Member
  • ***
  • Messages: 129
    • Voir le profil
Manipulation de shapes et optimisation
« le: Novembre 22, 2012, 01:27:41 pm »
Salut à tous !

J'utilise la SFML avec le moteur physique Box2D, et j'essaie de rendre de façon la plus optimisée
possible les corps que Box2D gère avec des sf::Shape.

pour faire correspondre une sf::Shape à un "body" de Box2D, j'ai 2 possibilités :

Soit je fais une sf::RectangleShape, et j'update la position et l'angle à toutes les frames :
m_shape.setRotation(m_body->GetAngle()*RAD_TO_DEG); // Pour convertir les radians en degrés
m_shape.setPosition(m_body->GetPosition().x, m_body->GetPosition().y);

Ou alors je fais un polygon dont j'update chaque point :

for (int i=0; i<4; i++)
{
        b2Vec2 vertex = Bodypoint[i];
        m_polygon.AddPoint(vertex.x*PIXELS_PER_METER, vertex.y*PIXELS_PER_METER)
}
 


Ma question est de savoir quelle est la solution la plus optimisée ?
Gérer les 4 points me semble redondant, mais après je n'ai aucune idée de la "lourdeur" de la fonction
setRotation() que j'utilise dans la première solution...

Merci d'avance pour votre aide !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Manipulation de shapes et optimisation
« Réponse #1 le: Novembre 22, 2012, 01:37:50 pm »
Ca dépend de plein de choses. Donc au lieu de te faire une grosse réponse avec tous les facteurs de performance potentiels, je dirais: teste. Fais toi un bon gros setup avec des milliers de corps, et compare les deux solutions.

Concernant la seconde, il faut faire attention de ne pas rendre les choses trop lourdes. En l'occurence la classe sf::ConvexShape n'est pas adaptée à des changements dynamiques, il vaudra mieux utiliser directement un vertex array.
Laurent Gomila - SFML developer

actuenligne

  • Full Member
  • ***
  • Messages: 129
    • Voir le profil
Re : Manipulation de shapes et optimisation
« Réponse #2 le: Novembre 22, 2012, 02:27:23 pm »
Merci pour ta réponse rapide Laurent !
Je vais tester ça. Et donc a priori les deux méthodes sont a peu près équivalentes ?
« Modifié: Novembre 22, 2012, 02:36:31 pm par actuenligne »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Manipulation de shapes et optimisation
« Réponse #3 le: Novembre 22, 2012, 02:38:54 pm »
On peut dire ça oui.
Laurent Gomila - SFML developer