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

OpenGL Discussion :

Trop de ressource mémoire


Sujet :

OpenGL

  1. #1
    Membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Points : 48
    Points
    48
    Par défaut Trop de ressource mémoire
    Bonjour à tous,

    voila, je viens de remarqué un GROS soucis sur mon "jeu" sous delphi et openGL.

    Quand je le lance et que je le test, bon avec un 3go de RAM et bon processeur c'est pas fluide c'est assez saccadé même. Donc je voulais réglé cela mais je ne sais pas comment faire, et par curiosité j'ouvre le gestio des taches, et la je vois que mon simple petit jeu ou il y a juste une voiture et quelques texture prends ENORMEMENT de ram, ca commence à 50 000k puis ca ne cesse d'augmenté, j'ai atteins les 600 000k en 2 minutes, alors c'est pas du tout gérable.

    Y a t il une fonction que j'aurai omise de mettre pour éviter cela ?


    Cordialement

  2. #2
    Membre éprouvé
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Points : 1 179
    Points
    1 179
    Par défaut
    Salut,

    Le fait que ça ne cesse d'augmenter suggere des pertes mémoire importantes non ?
    Que ça mange 50M au démarrage, rien de choquant jusque là. Par contre que ça ne se stabilise jamais... là y'a un soucis.

    Cherche des pertes de mémoire, des trucs non désaloués, ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 68
    Points : 75
    Points
    75
    Par défaut
    Pour détecter les memory leaks avec Delphi et faire un peu de profiling de ton programme, tu peux utiliser AQTime, il marche très bien (ne pas oublier d'activer les options de debugs de ton projet avant).

  4. #4
    Membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Points : 48
    Points
    48
    Par défaut
    AQTime est payant non ? :S


    Et sinon, bah j'ai trouvé une ligne qui est le timer perso donc je pige même pas comment il fonctionne puisque c'est mon pote qui l'a implémenté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Procedure FctTimeCallBack( uTimerID, uMessage: UINT;
                               DwUser, Dw1, Dw2: DWord) StdCall;
    Begin
         {Rafraîchir la fenêtre FrmOpenGL}
         InvalidateRect( FrmOpenGL.Handle, Nil, False);
    End;
     
     
    procedure TFrmOpenGL.FormCreate(Sender: TObject);
    {Objectif :C'est ici que OpenGL doit être initialisé, à la création de la
               fenêtre.}
    begin
    ......
      {Création d'un Timer}
         Temps := TimeSetEvent (5, 0, @FctTimeCallBack, 0, TIME_PERIODIC);
    end;
    lorsque je commente la seul ligne de la fonction FctTimeCallBack, il n'y a plus aucune perte de memoire MAIS le jeu est fixe, on ne peu pas joué ^^


    Ca peut venir de la ?

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 673
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 673
    Points : 7 051
    Points
    7 051
    Par défaut
    Tu raffraîchis ton jeu dans un timer ?
    Quel intérêt ?
    Avec un intervalle de 5 millisecondes en plus ...

    Moi, je ne demande le rafraîchissement que quand il y a une action (de la part du joueur, par exemple), ou que c'est utile. Sinon, non.

  6. #6
    Membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Points : 48
    Points
    48
    Par défaut
    Car je fais un GTA Like et donc le jeu joue sans l'intervention du joueur, vive l'IA :/

    Mais en faite j'ai trouvé le soucis, dans la boucle principal je rappelé cette fonction :
    Or dedans il y avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     LoadTexture('../images/Car.tga', MyTextureTex,false);    // Load the Texture
    Donc je vous laisse imaginé le nombre de texture chargé ^^

    Pour évitez ce soucis, je voulais la mettre dans la methode Create mais ca faisait bugé l'affichage de ma map, allez savoir pourquoi donc j'ai décidé de mettre ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if load then
          Begin
          LoadTexture('../images/Car.tga', MyTextureTex,false);    // Load the Texture
          Load := False;
          End;
    Soucis c'est que des que je lance le jeu, moi voiture est un pti peu propulsé (je ne sais même pas pourquoi) et que lorsque la voiture doit s'arrêter d'avancer, elle se met a reculé comme si on la tapé et s'arrête ensuite ^^

    Je vais faire une petite vidéo pour illustrer le bug lol


    EDIT : Voici la video : http://sd-10548.dedibox.fr/tuto/bug%...%20voiture.htm

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 475
    Points
    20 475
    Par défaut
    Citation Envoyé par Rian83 Voir le message
    et la je vois que mon simple petit jeu ou il y a juste une voiture et quelques texture prends ENORMEMENT de ram,
    Cordialement

    Tu dis que tu as juste une petite voiture mais....si elle a plus de 100 000 sommets et x nombre de polygones sans comtper la taille des textures , les ressources risquent d'être sollicitées.
    Sans compter que si tu utilises des classes ou du code tierce pour charger un fichier .3ds et que cette partie du code fait beaucoup d'allocations mémoires réponse identique que précédemment...
    Quel est la taille de tes textures , de ton objet 3d ?

  8. #8
    Membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Points : 48
    Points
    48
    Par défaut
    Il suffit juste de regarder la video que je viens de mettre

    Mais si je dis petit jeu, petite voiture ce n'est pas pour rien. Et rien ne devrait faire atteindre 800Mo de ram si je dis petit quand même ^^

    Je suis en 2D, pas de 3D, ni d'objet importé à part une simpe texture TGA de 30ko pour la voiture et quelques kilo pour les tiles de la map (et encore, il n'y en a que 10 à peu près).


    Mais j'ai partiellement résolu le soucis, le problème est que la solution que j'ai trouvé fais bizarrement bugé le jeu ...

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 475
    Points
    20 475
    Par défaut
    Salut Rian83 s'cuse je n'avais pas vu le lien vidéo.
    Il faut pas perdre de vue qu'en mode fenêtré l'affichage est plus lente et que cela sollicite bcp le CPU qui je le rappelle doit commuter sur les taches des différentes fenêtres ouvertes.
    As-tu le même problème en plein écran ?

  10. #10
    Membre du Club
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2007
    Messages : 146
    Points : 48
    Points
    48
    Par défaut
    Et bien j'ai commenté certain truc et je n'ai plus la mémoire qui monte donc ca ne change rien fenêtré ou plein écran.

    (mais je vais me penché sur comment mettre en pleine ecran en redimensionnant donc en gardant les même trucs en affichage)

Discussions similaires

  1. Surveillance niveau de ressources /mémoire
    Par Wilco dans le forum Delphi
    Réponses: 1
    Dernier message: 12/05/2007, 15h28
  2. Pas trop de ressources système pour un script windows (MS-DOS) ?
    Par ptiscab dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 13/03/2007, 13h16
  3. [ASE 12.0] : trop de ressources système
    Par sparcx5 dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 25/01/2007, 15h47
  4. Site prenant trop de ressources réseaux ?
    Par Riwalenn dans le forum ASP
    Réponses: 13
    Dernier message: 15/09/2006, 11h52
  5. [Java Outlook Connector] ressources mémoires
    Par winnux dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 26/07/2006, 15h54

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