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 :

Fuite Mémoire - 3D


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Par défaut Fuite Mémoire - 3D
    Bonjour
    je développe en c# et j'utilise SlimDx.Direct3D9 pour la 3D
    je réalise un rendu d'une scene 3D
    jusque là tout va bien.

    mon problème est le suivant.

    j'ai besoin après le rendu de faire une image.
    donc j'utilise les Surfaces.

    le code suivant fonctionnent mais j'ai des fuites mémoires
    juste BmpX est déclarée plus haut Bitmap BmpX;

    using (surface = device.GetRenderTarget(0))
    {
    using (surface2 = Surface.CreateOffscreenPlain(device, surface.Description.Width, surface.Description.Height, surface.Description.Format, SlimDX.Direct3D9.Pool.SystemMemory))
    {
    device.GetRenderTargetData(surface, surface2);
    using (Bitmap BmpTmp = new Bitmap(Surface.ToStream(surface2, ImageFileFormat.Bmp, new Rectangle(0, 0, surface.Description.Width, surface.Description.Height))))
    {
    if (BmpX != null) { BmpX.Dispose(); BmpX = null; }
    BmpX = (Bitmap)BmpTmp.Clone();
    }
    }
    }

    sa fuis beaucoup et je vois pas pourquoi !

    quelqu'un aurai-il une solution gràce à son expérience.
    suis bloqué
    merci

    Zan

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Citation Envoyé par zan974 Voir le message
    le code suivant fonctionnent mais j'ai des fuites mémoires
    Comment le sais tu ?

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Par défaut Fuite
    Bonjour

    Ben quand j'enleve ce bout de code, et que je regarde dans le gestionnaire de tâche de windows, et bien je consomme une quantité de mémoire qui est stable.
    si je remets le code, sa monte continuellement.

    voilà tout.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Par défaut
    j'ai beau faire un dispose ou pas
    de passer par un Bitmap intermédiaire
    sa change pas grand chose
    mon idée - un bug avec la version de slilmDx v2.0.50727
    en utilisant DirectX9
    peut faut-il que je passe à Direct11
    sinon je vois pas !

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Par défaut
    enfin je cherche encore
    d'où mes questions

  6. #6
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Par défaut
    ou alors sa viens de mon device

    je l'ais définis comme cela

    // Setup the device creation parameters
    parameters = new PresentParameters()
    {
    Windowed = true,
    BackBufferWidth = Panel3D.Width,
    BackBufferHeight = Panel3D.Height,
    BackBufferCount = 2,
    BackBufferFormat = adapterInfo.CurrentDisplayMode.Format,
    Multisample = MultisampleType.None,
    SwapEffect = SwapEffect.Discard,
    DeviceWindowHandle = Panel3D.Handle,
    PresentationInterval = PresentInterval.Default,
    FullScreenRefreshRateInHertz = 0,
    AutoDepthStencilFormat = Format.D16,
    EnableAutoDepthStencil = true
    };


    // Create the Direct3D device
    device = new Device(_direct3D9, adapterInfo.Adapter, DeviceType.Hardware, Panel3D.Handle, CreateFlags.HardwareVertexProcessing, parameters);

    device = new Device(_direct3D9, adapterInfo.Adapter, DeviceType.Hardware, Panel3D.Handle, CreateFlags.SoftwareVertexProcessing, parameters);

    _direct3DDeviceCache.Add(Panel3D.Handle, device);



    // Turn on the Z-buffer.
    device.SetRenderState(RenderState.ZEnable, true);
    device.SetRenderState(RenderState.ZEnable, ZBufferType.UseZBuffer);

    Color4 xC = new Color4(0, 0.84f, 0.846f, 0.87f);

    device.SetRenderState(RenderState.Ambient, xC.ToArgb()); // int (Color4)




    device.SetRenderState(RenderState.StencilEnable, true);
    device.SetRenderState(RenderState.StencilFunc, (int)Compare.Always);
    device.SetRenderState(RenderState.StencilRef, 0);
    device.SetRenderState(RenderState.StencilPass, (int)StencilOperation.Replace);
    device.SetRenderState(RenderState.StencilFail, (int)StencilOperation.Replace);
    device.SetRenderState(RenderState.StencilFail, (int)StencilOperation.Replace);

    device.SetRenderState(RenderState.PointSize, 200);



    Qu'en pensez vous ?

Discussions similaires

  1. [tomcat][memoire] java.net.URL et fuite mémoire
    Par Seiya dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 09/03/2009, 10h41
  2. [Fuites mémoire] Je cherche un utilitaire
    Par 10_GOTO_10 dans le forum C++Builder
    Réponses: 8
    Dernier message: 10/02/2005, 10h03
  3. Outil de recherche de fuite mémoire
    Par eag35 dans le forum MFC
    Réponses: 4
    Dernier message: 02/02/2005, 12h46
  4. [SWT]SWT et fuite mémoire(ou pas)
    Par menuge dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 22/06/2004, 21h40
  5. [debug] fuites mémoires
    Par tmonjalo dans le forum C
    Réponses: 3
    Dernier message: 28/07/2003, 17h20

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