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

Auteur Sujet: Tableau fixe de sprites  (Lu 7329 fois)

0 Membres et 1 Invité sur ce sujet

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Tableau fixe de sprites
« le: Mai 18, 2012, 02:44:32 pm »
Salut

J'ai une question d'ordre général sur l'optimisation et je voudrais votre avis.
En gros dans mon moteur de RPG 2D le jeu est divisé en maps. Un nombre arbitraire de maps peuvent être à l'écran à la fois (si on dézoome à fond).
Chaque map a un nombre fixe de cases (60x60 = 3600), et actuellement chaque case possède les éléments suivants:
- pointeur sur un objet tile qui me donne les propriétés de la case (collision etc)
- sf::sprite pour afficher la case

Le pb est que même si sf::sprite est léger, j'arrive rapidement à ~150 Mo de mémoire bouffée par tous les sf::sprite.

Donc à votre avis comment faire pour réduire la taille totale prise par la mémoire? J'ai pensé créer une nouvelle classe qui hérite de sf::drawable mais pas de sf::transformable, vu que c'est de là qui vient la plus grosse partie de l'objet

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Tableau fixe de sprites
« Réponse #1 le: Mai 18, 2012, 03:09:31 pm »
Mets tout ton niveau dans un gros sf::VertexArray.
Laurent Gomila - SFML developer

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Tableau fixe de sprites
« Réponse #2 le: Mai 18, 2012, 03:22:27 pm »
Du coup je suis obligé de dessiner tout le vertex array d'un coup non?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Tableau fixe de sprites
« Réponse #3 le: Mai 18, 2012, 03:24:11 pm »
Oui, du coup tu auras de bien meilleures performances.
Laurent Gomila - SFML developer

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Tableau fixe de sprites
« Réponse #4 le: Mai 18, 2012, 03:28:55 pm »
Euh ouais mais en théorie je ne dessine que les sprites qui sont dans ma vue, soit ptet 30% de ceux qui sont dans une map.
Enfin bref je verrai chez moi ce soir pour les vertex array, je connaissais pas mais je peux surement adapter à mon cas

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Tableau fixe de sprites
« Réponse #5 le: Mai 18, 2012, 03:44:23 pm »
Citer
Euh ouais mais en théorie je ne dessine que les sprites qui sont dans ma vue, soit ptet 30% de ceux qui sont dans une map.
Je pense que tu auras tout de même de meilleures performances. Ce qui limitait SFML avant c'était le nombre d'appels OpenGL (donc le nombre d'appels à la fonction draw) et non pas le nombre de triangles affichés.
Laurent Gomila - SFML developer

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Tableau fixe de sprites
« Réponse #6 le: Mai 18, 2012, 04:39:26 pm »
Bonjour,

est-ce que ça veut dire que si on renferme toutes nos méthodes style draw et display dans le scope d'une condition qui attend qu'un temps x soit écoulé avant d'être vraie, on aura toujours un si bon affichage (à condition de rester dans un laps de temps qui donne l'illusion de la continuité) mais des perfs bien meilleures ?

Si je suis pas clair désolé.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Tableau fixe de sprites
« Réponse #7 le: Mai 18, 2012, 04:59:35 pm »
Oui mais bon, si tu dois attendre pour dessiner ça veut dire que tu as déjà des performances suffisantes :P
Laurent Gomila - SFML developer

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Tableau fixe de sprites
« Réponse #8 le: Mai 18, 2012, 05:09:07 pm »
Ouep  ;)

Mais c'est dans le cas ou autre chose (à priori bien codé) effectue un traitement très très lourd, je cherche du coup où on peut faire des économies..

pour être moins mystérieux, je penses utiliser le nouveau moteur d'éclairage présenté par Gregouar dans les projets SFML, et apparemment c'est un moteur gourmand, sur lequel je ne pourrais malheureusement pas vraiment gagner en performances.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Tableau fixe de sprites
« Réponse #9 le: Mai 18, 2012, 06:37:44 pm »
Tu gagneras en performances si tu peux découpler le truc qui prend du temps de l'affichage (calculs de logique ou de collisions par exemple). Or ici je ne pense pas que ce soit le cas :)
Laurent Gomila - SFML developer

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Tableau fixe de sprites
« Réponse #10 le: Mai 23, 2012, 12:04:43 pm »
Ok, donc va falloir que je mette les mains dans le cambouis  :'( avec tout ce que j'ai à faire déjà  ;D.

Merci pour les infos en tout cas.
 

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Re : Tableau fixe de sprites
« Réponse #11 le: Août 23, 2012, 09:53:19 pm »
Mets tout ton niveau dans un gros sf::VertexArray.
Hello
je uppe 3 mois après....
en fait comment je dois faire concrètement? J'ai mon tableau de sf::texture (qui part normallement dans un tableau de 60x60 sf::sprites), comment je fais pour faire un seul objet sf::VertexArray qui affiche toutes les textures collées selon ma grille?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Tableau fixe de sprites
« Réponse #12 le: Août 23, 2012, 10:49:50 pm »
Un seul VertexArray implique forcément une seule texture. C'est justement pour ça que tu gagnes en performances, tu peux tout afficher en un seul appel OpenGL.

Il faut donc tout regrouper, si tu le peux, dans la même texture.
Laurent Gomila - SFML developer

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Tableau fixe de sprites
« Réponse #13 le: Août 24, 2012, 06:43:54 pm »
Là où je pige pas c'est que je vois pas de sf::texture dans vertexarray, du coup comment je lui assigne une texture?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Tableau fixe de sprites
« Réponse #14 le: Août 24, 2012, 07:11:44 pm »
window.draw(vertexArray, texture);
Laurent Gomila - SFML developer