Salut tout le monde,
J'essaie de comprendre à quoi peuvent bien servir les subsurfaces dans pygame que je ne connaissais pas.
Je n'arrive pas à y trouver une utilité, certains disent que cela est utile dans le cas d'animations en jeu, sauf que je ne conçois pas comment :-/
Lorsque j'ai besoin de faire une animation à partir d'une image contenant plusieurs états d'un élément, j'utilise le troisième paramètre de pygame.Surface.blit définissant la partie de l'image des états à afficher, ce qui me semble bien plus simple.
S'il y a des cadors en jeu 2d, avec SDL ou pygame qui pourraient m'expliquer, ce serait avec plaisir.
# p-e conso mémoire ?
Posté par gaaaaaAab . Évalué à 4 (+2/-0).
disclaimer: je connais pas
Mais, le mot "blit" est rigolo, donc ça m'incite à chercher :)
je tombe sur https://runebook.dev/en/articles/pygame/ref/surface/pygame.Surface.subsurface
Vers le bas de la page, il y a des comparaisons entre l'utilisation des subsurface ou d'autres méthodes.
Je pense que la comparaison avec ce que tu fais, c'est le paragraphe "Blitting Portions of a Surface". Si c'est ça, l'intérêt des subsurfaces, ce serait de consommer moins de mémoire. Et comme les pixels sont partagés entre la subsurface et la surface, faut probablement être plus précis.
[^] # Re: p-e conso mémoire ?
Posté par gled . Évalué à 2 (+1/-0). Dernière modification le 13 juin 2025 à 10:41.
Merci du lien =)
J'ai un peu testé ce que ça peut donner en mémoire, et y a quoi ? Peut-être 1 % de plus en conso mémoire avec un blit de la zone spécifiée par rapport à une subsurface, c'est quand même très peu, je trouve, pour une image de 300 x 300 changeant 10 fois par seconde.
J'ai simplement regardé la consommation en mémoire via le moniteur système de Mate.
Testé avec ce simple script :
Il suffit d'inverser la ligne commentée pour comparer les consommations en mémoire.
[^] # Re: p-e conso mémoire ?
Posté par gaaaaaAab . Évalué à 2 (+0/-0).
Dans l'exemple, il utilise 2 Surface et il blit une partie d'une surface sur une autre. Mais ce n'est pas ce que tu fais dans ce code, et du coup, tu n'as pas le double de conso de Surface.
J'atteins la limite de ce que je comprends du sujet sans vraiment mettre les mains dedans. Je ne peux pas élaborer sur l'intérêt des subsurface pour ce code.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.