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 :

(LWJGL) Libérer les ressources à la fermeture ?


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 16
    Points : 18
    Points
    18
    Par défaut (LWJGL) Libérer les ressources à la fermeture ?
    Bonjour !

    Voilà, je débute complètement avec OpenGL, et j'aurais aimé avoir une petite information "de base".

    Normalement, lorsque l'on ferme notre programme, toutes les ressources allouées (pour les display lists, les textures, ect.) ont déjà dues être libérées avec des glDelete*(). Mais ça, ce n'est que dans le cas "normal" (si on a codé correctement et s'il n'y a pas eu d'interruption).

    Maintenant, que se passe-t-il si on ferme le programme avant d'avoir libéré toutes ces ressources ? Sont-elles libérées par un "Display.destroy()" (j'utilise LWJGL) ou bien simplement par la fermeture du programme sans qu'on ai rien à faire ?
    En fait j'aimerais savoir si, en cas de la levée d'une exception m'entrainant à clore l'application, je dois libérer moi-même ces ressources ou pas ^^'. Je sais le faire, mais je me demande si c'est vraiment nécessaire, car ça impliquerait de "retenir" toutes les IDs quelque part, ou d'utiliser un système avec la méthode "finalize()" et "runFinalizesOnExit()" après s'être assuré qu'il n'y ai plus d'autres thread que le principal (enfin on aurait le choix entre un truc chiant ou un truc moche quoi...).

    Voilà, ce n'est ni important, ni urgent, mais merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 477
    Points
    11 477
    Billets dans le blog
    11
    Par défaut
    Je serais tenté de dire qu'il faut toujours désallouer la mémoire que l'on a alloué, donc si tu as un exception pour laquelle le traitement est la fermeture de l'application, alors oui, il faut désallouer ta mémoire, y compris celle pour les objets OpenGL.
    car ça impliquerait de "retenir" toutes les IDs quelque part
    Cette phrase me fait peur. Tu ne les stockes pas quelque part tes ID ? Comment tu libères les objets OpenGL si ce n'est pas le cas ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Bonjour et merci de la réponse ^^

    En fait, avant je stockais les ID (bien entendu) mais pas forcément en un même endroit (donc en situation normale, toutes les ressources étaient bien libérées, mais lors d'une exception...).

    Aujourd'hui, j'ai fais ce petit effort (en fait quand on a un peu de temps, c'est moins chiant ><) et je libère bien les ressources quoi qu'il arrive.

    En fait, ce que je me demandais, c'est si java s'en occupait lui-même (comme "tout le reste") ou pas.

    En tout cas merci, au moins maintenant je suis fixé ^^

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    Personnellement, je fais toujours des 'managers' pour s'occuper de ça. En gros, une classe qui stocke des données OpenGL: le texture manager stocke les textures (une texture étant un id OpenGL ainsi que des paramètres associés), le mesh manager a la liste des vertexbuffers etc.

    Et sous Java, la mémoire vidéo n'est pas desalouée proprement si on le fait pas a la main, parce que tout ce qui est stocké, c'est des identifiants sur des ressources, sans savoir ce que c'est. Du coup, je fais une fonction destroy dans mes managers qui est normalement appelée manuellement, mais qui l'est aussi dans le finalize si ça n'a pas été fait (parce-que bon, un oubli peut vite arriver ).

Discussions similaires

  1. Libérer les ressources
    Par xokami35x dans le forum Langage
    Réponses: 10
    Dernier message: 09/09/2009, 20h48
  2. Libérer les ressources
    Par mouloudéen dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/03/2009, 09h46
  3. [SWT] Libérer les ressources
    Par soft0613 dans le forum SWT/JFace
    Réponses: 15
    Dernier message: 04/08/2008, 13h32
  4. Réponses: 3
    Dernier message: 09/10/2006, 19h22
  5. Libérer les ressources lors de la fermeture d'un programme
    Par Heliopraetor dans le forum DirectX
    Réponses: 10
    Dernier message: 14/09/2004, 19h15

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