IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Reference plutot que copie


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de LeonardL
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 57
    Par défaut Reference plutot que copie
    Bonjour,

    Je rencontre un petit problème en utlisant XNA (cependant mon problème est relatif au C#!).

    Je souhaite écrire un gestionnaire d'images, qui contiendrait une bibliothèque de texture et qui renverrait des références vers les images dès qu'un objet en demande une. En clair : je veux éviter la duplication d'images en mémoire.

    Mon TextureManager contient un dictionnaire liant string et Texture2D. A chaque demande, le gestionnaire vérifie si le nom de l'image est connu, auquel cas il renvoie l'image correspondante, sinon il la charge, l'ajoute à la bibliothèque et la renvoie.

    Un appel à la fonction GetTexture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    texture = textureManager.GetTexture(assetName);
    La définition de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            public Texture2D GetTexture(string assetName)
            {
                if (texturesBank.ContainsKey(assetName))
                    return texturesBank[assetName];
                else
                {
                    texturesBank.Add(assetName, content.Load<Texture2D>(assetName));
                    return texturesBank[assetName];
                }
            }
    Pour tester, j'ai crée 1000000 sprites que j'ai lié à une image via le texture manager. D'un autre côté, j'ai créé le même nombre de sprites en chargeant à chaque fois l'image d'une manière "classique".

    Le problème c'est que les performances sont meilleures avec la méthode classique : environ 130mo d'utilisation de la mémoire contre environ 160 mo pour la version utilisant le TextureManager.

    En cherchant d'ou venait le problème, je me suis dit que la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    texture = textureManager.GetTexture(assetName);
    ne stockait peut être pas une référence vers l'image de la bibliothèque du texture manager mais bien directement la texture. Après le chargement des images et avant leur affichage à l'écran, j'ai donc vidé la bibliothèque d'images. Ainsi, elles n'auraient pas du s'afficher à l'écran puisqu'elles n'existeraient plus en mémoire... Le problème c'est que l'affichage ne pose pas de problèmes...

    Voila donc ma question, comment m'assurer que mon TextureManager retourne bien une référence vers chaque image plutôt que de retourner les objets images?

    Merci,

  2. #2
    Membre éclairé Avatar de LeonardL
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 57
    Par défaut
    Bon, après des recherches sur le net :
    I just found out that the XNA2.0 ContentManager automatically checks if content is already loaded or not
    Mon truc ne sert donc pas à grand chose et je ne m'étais finalement pas trompé xD

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Conseils] WebServices plutôt que Client/Serveur classique ?
    Par gk14fire dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 28/08/2006, 09h07
  2. Resultat de requete =0 plutot que nul
    Par Satan dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/06/2006, 16h48
  3. [ping] tcp plutot que icmp
    Par orelero dans le forum Développement
    Réponses: 6
    Dernier message: 05/05/2006, 20h31
  4. Trier un std::map selon les valeurs plutot que les clés
    Par dj.motte dans le forum SL & STL
    Réponses: 2
    Dernier message: 13/11/2004, 21h54
  5. Avantages du 2.6 par rapport a 2.4, Apache 2 plutot que 1.3.
    Par Aeternus dans le forum Administration système
    Réponses: 9
    Dernier message: 08/04/2004, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo