Bonjour,
Je sais que le sujet des performances a déjà été abordé ici. La solution, pour dessiner des choses à l'écran sans trop perdre en images par seconde, c'est d'utiliser un nombre minimum de sf::VertexArray plutôt que d'afficher plein de sprites. Je cite : "les performances sont directement proportionnelles au nombre d'appels à draw..." J'avais déjà pu tester que d'afficher un sprite par tile dans une tilemap réduisait drastiquement les performances.
Aujourd'hui j'ai fais un petit test en affichant une image en deux tableaux de vertices. Elle représente le terrain, ou la map, c'est un simple dessin sous paint. Le premier tableau représente le sol, le deuxième ce qui pourra être affiché par-dessus le personnage. Entre les deux je dessine le sprite, donc.
Je voudrais savoir s'il est normal que chaque appel à draw pour un VertexArray divise mon fps par environ deux ?Pour le coup j'ai fait un autre test en rajoutant une dizaine de sprites et ça a moins d'impact que l'ajout d'un seul VertexArray.
Loin de moi l'envie de dénigrer la SFML, c'est une bibliothèque que j'aime beaucoup, mais je voudrais savoir, n'étant pas du tout professionnel ni très expérimenté, si ce comportement est comparable avec celui des technologies utilisées dans les jeux 2d commerciaux, si les développeurs professionnels doivent composer avec les mêmes contraintes ? Outch la phrase à rallonge. Donc voilà, j'ai mis des petites images pour étayer mes propos et vous montrer mes talents de dessinateur Mspaint approved.
Merci d'avance à ceux qui pourront me répondre.
Voici mes tests (j'utilise une carte graphique récente avec accélération 3d) :
Ici je dessine tout. J'ai un FPS de 108ms. J'enlève un VertexArrayJ'enlève les deux.Voici ce que contiennent les VertexArray, et comment je les rempli, au cas où ça puisse avoir un impact sur les perfs :