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

Auteur Sujet: [SFML 2] Texture  (Lu 6306 fois)

0 Membres et 1 Invité sur ce sujet

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
[SFML 2] Texture
« 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

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2] Texture
« Réponse #1 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.
Laurent Gomila - SFML developer

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #2 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

minirop

  • Sr. Member
  • ****
  • Messages: 254
    • Voir le profil
    • http://dev.peyj.com
Re : [SFML 2] Texture
« Réponse #3 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.

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #4 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 ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2] Texture
« Réponse #5 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.
Laurent Gomila - SFML developer

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #6 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.


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2] Texture
« Réponse #7 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.
Laurent Gomila - SFML developer

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #8 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.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 2] Texture
« Réponse #9 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.
Laurent Gomila - SFML developer

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #10 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?

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #11 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

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #12 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 ?

scipion60

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #13 le: Juin 01, 2012, 08:40:22 pm »
je ne vois comment créer un shape complexe? en fonction de de carte :-\

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : [SFML 2] Texture
« Réponse #14 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/
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...