Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: scipion60 le Mai 26, 2012, 07:04:29 am

Titre: [SFML 2] Texture
Posté par: scipion60 le Mai 26, 2012, 07:04:29 am
Bonjour,

Est ce que la taille en mémoire de l'objet sf::Texture dépend de la taille de l'image de base ou de son poids en octé?

car j'ai une image qui fait 14 Mo sur 2000x1500, une autre de 100 ko sur 2000x1500 elle prenne chacune 50 Mo de mémoire... donc à se rythme je ne vais pouvoir afficher beaucoup d'image.... :-\

Merci
Titre: Re : [SFML 2] Texture
Posté par: Laurent le Mai 26, 2012, 08:10:33 am
Citer
Est ce que la taille en mémoire de l'objet sf::Texture dépend de la taille de l'image de base ou de son poids en octé?
Absolument pas.

Citer
car j'ai une image qui fait 14 Mo sur 2000x1500, une autre de 100 ko sur 2000x1500 elle prenne chacune 50 Mo de mémoire...
2000x1500x4 = 11.4 Mo
Et ça va dans la mémoire de la carte graphique, donc tu ne devrais pas le voir.
Titre: Re : [SFML 2] Texture
Posté par: scipion60 le Mai 26, 2012, 08:19:15 am
ok,

je charge 18 images de mes dimensions mais pas de même poids. En gros une image de 14 mo et 17 autre de 100 ko mais mon application se retrouve avec un 1,2 Go de mémoire alloué....

donc je ne comprend pas trop d'où viendrais l'erreur
Titre: Re : [SFML 2] Texture
Posté par: minirop le Mai 26, 2012, 09:16:44 am
la taille prise en mémoire par une image dépend de ses dimensions, donc quelque soit le format sur le disque, en mémoire, c'est forcément décompressé, donc 11.4 pour chacune de tes images. Après les 18 donnent ~200Mo, pas 1.2Go, donc ça n'explique pas la différence. ça ne peut venir que de ton code je présume.
Titre: Re : [SFML 2] Texture
Posté par: scipion60 le Mai 29, 2012, 05:21:46 pm
Bonjour,

je me suis rendu compte que mes 18 images font en faite 4096x2271 chacun donc cela crée un monstre en mémoire....

il y a t'il possibilité de compressé les png en mémoire?

ou est -il plus logique de chercher à découper les images ?
Titre: Re : [SFML 2] Texture
Posté par: Laurent le Mai 29, 2012, 06:01:40 pm
Citer
il y a t'il possibilité de compressé les png en mémoire?
Oui, mais ce n'est pas supporté par SFML.

Citer
ou est -il plus logique de chercher à découper les images ?
Pourquoi faire ? Ca prendra tout autant de place en mémoire.
Titre: Re : [SFML 2] Texture
Posté par: scipion60 le Mai 30, 2012, 08:52:41 am
Citer

il y a t'il possibilité de compressé les png en mémoire?
Oui, mais ce n'est pas supporté par SFML.
alors y a t'il possibilité d'inter-agir avec la SFML?



Citer
ou est -il plus logique de chercher à découper les images ?
Pourquoi faire ? Ca prendra tout autant de place en mémoire.
En fait, dans mes images, la majorité ne sont que des images qui représentent une zone et le reste est transparent, je pensait devoir recadrer mes images et les placer en coordonnée cartésienne via la SFML.

Titre: Re : [SFML 2] Texture
Posté par: Laurent le Mai 30, 2012, 08:58:19 am
Citer
alors y a t'il possibilité d'inter-agir avec la SFML?
Non. Tout ce que tu peux faire c'est modifier SFML pour ajouter certaines choses.

Citer
En fait, dans mes images, la majorité ne sont que des images qui représentent une zone et le reste est transparent, je pensait devoir recadrer mes images et les placer en coordonnée cartésienne via la SFML.
J'ai pas compris.
Titre: Re : [SFML 2] Texture
Posté par: scipion60 le Mai 30, 2012, 09:13:46 am
En fait je suis toujours à essayer de gérer ma carte à zone interactive.

Ma première version était de créer autant d'image que de zone sur la carte. Ces images avaient la même taille que la carte et elle n'avait qu'une partie précise colorié. Sauf que le problème c'est que cela prend beaucoup trop en mémoire...

Ma deuxième solution serait de créer des images ne contenant que la zone et de placer cette image au bonne endroit sur la carte.
Titre: Re : [SFML 2] Texture
Posté par: Laurent le Mai 30, 2012, 09:19:50 am
Citer
Ma première version était de créer autant d'image que de zone sur la carte. Ces images avaient la même taille que la carte et elle n'avait qu'une partie précise colorié. Sauf que le problème c'est que cela prend beaucoup trop en mémoire...

Ma deuxième solution serait de créer des images ne contenant que la zone et de placer cette image au bonne endroit sur la carte.
Ah oui là je vois. C'est clair que ce serait carrément plus optimisé, là y a pas photo. Pour quelques calculs de coordonnées qui vont te prendre 5 minutes, tu vas économiser 1 Go de mémoire vidéo (et plusieurs secondes de chargement j'imagine), y a pas à hésiter.
Titre: Re : [SFML 2] Texture
Posté par: Cpl.Bator le Mai 30, 2012, 05:16:52 pm
Et pourquoi pas créer des polygones à la place des images ?
un simple test de point présent dans un triangle peut faire l'affaire, non?
Titre: Re : [SFML 2] Texture
Posté par: scipion60 le Mai 31, 2012, 03:58:19 pm
Citer
Et pourquoi pas créer des polygones à la place des images ?
un simple test de point présent dans un triangle peut faire l'affaire, non?


j'ai fait ce choix car mes zones sont de formes complexes et les bords de leur jointures ne sont pas réguliers


Citer

Ah oui là je vois. C'est clair que ce serait carrément plus optimisé, là y a pas photo. Pour quelques calculs de coordonnées qui vont te prendre 5 minutes, tu vas économiser 1 Go de mémoire vidéo (et plusieurs secondes de chargement j'imagine), y a pas à hésiter.

c'était la meilleur solution je suis passé à 150 Mo avec toutes mes zones chargées
Titre: Re : [SFML 2] Texture
Posté par: Cpl.Bator le Mai 31, 2012, 06:22:37 pm
tu peut toujours créer un shape complexe de manière à avoir le plus de précision possible et ainsi collé au maximum à la région , ce sera toujours moins lourd que je faire du pixel-perfect , non ?
Titre: Re : [SFML 2] Texture
Posté par: scipion60 le Juin 01, 2012, 08:40:22 pm
je ne vois comment créer un shape complexe? en fonction de de carte :-\
Titre: Re : [SFML 2] Texture
Posté par: Cpl.Bator le Juin 01, 2012, 09:00:17 pm
via un éditeur que tu codes , c'est pas sorcier , tu load une image que tu affiches dans un sprite , tu lui colles manuellement les points à la main , ou tu te fait un petit algo qui te fait ca automatiquement , voici un exemple avec box2d :
http://code.google.com/p/box2d-editor/ (http://code.google.com/p/box2d-editor/)
le fichier de sortie est simple à comprendre , c'est une série de points 2d.

Puis dans ton application final , pour chaque shape , tu testes si ta souris est dans un des triangles de la shape.

tu commences par un teste de collision grossier ( point dans AABB )
si TRUE , tu examines tout les triangles de la shape et tu teste la collision entre le point cible est le triangle courant
si FALSE , tu passes à la shape suivante.
etc...
Titre: Re : [SFML 2] Texture
Posté par: scipion60 le Juin 01, 2012, 09:07:14 pm
ok, merci je ne connaissait pas. je vais tester ça asap :)