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

Développement 2D, 3D et Jeux Discussion :

Class de mesh, comment bien faire ?


Sujet :

Développement 2D, 3D et Jeux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 53
    Par défaut Class de mesh, comment bien faire ?
    Hello, voila mon soucis:

    Actuelement ma class de mesh crée ses vertex buffer directement dans la memoire de la carte graphique (via le renderer), ce qui a termes va me poser plusieurs problemes (calcule de la lumiere, tris, ect...)vu que pour avoir acces au données je dois locker puis delocker mes buffers.
    Donc ma question est simple, faites vous une copies des donnée (vertices, indices , faces ou autres) en membre (donc données residente en ram et gpu) ?

    A prioris je m'oriente vers cette solution (mais dans le cas d'un renderer software, ca feras double emplois).
    Si je choisi cette solution, je pourais aisement faire mes calculs de lumieres ect... Et surtout ne pas charger le carte si mon mesh, n'a pas besoin d'etre renderé.

    Du coup autre question : Vu le quantité de memoire limité de la CG, si je decide de renderer mon object, je vais allouer la memoire et copier les datas dedans, Qu'est ce qui me garanti que la memoire alloué par cet object ne sera pas ecrasée par un autre (si la memoire est pleine) ?.
    Quel est la bonne technique pour gerer le memoire de la carte graphique?
    A quel moment vais-je y alouer le memoire ?
    y a t il un moyen de savoir si les données sont toujours valide dans la carte ?

    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Actuelement ma class de mesh crée ses vertex buffer directement dans la memoire de la carte graphique (via le renderer), ce qui a termes va me poser plusieurs problemes (calcule de la lumiere, tris, ect...)vu que pour avoir acces au données je dois locker puis delocker mes buffers.
    Donc ma question est simple, faites vous une copies des donnée (vertices, indices , faces ou autres) en membre (donc données residente en ram et gpu) ?
    Ca peut se faire oui, mais bon après chargement / initialisation tu de ne devrais pas avoir à accéder en lecture à la géometrie.

    Du coup autre question : Vu le quantité de memoire limité de la CG, si je decide de renderer mon object, je vais allouer la memoire et copier les datas dedans, Qu'est ce qui me garanti que la memoire alloué par cet object ne sera pas ecrasée par un autre (si la memoire est pleine) ?.
    Quel est la bonne technique pour gerer le memoire de la carte graphique?
    A quel moment vais-je y alouer le memoire ?
    y a t il un moyen de savoir si les données sont toujours valide dans la carte ?
    Ca tu n'as pas à t'en soucier, c'est le driver qui gère.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 53
    Par défaut
    Citation Envoyé par Laurent Gomila
    Ca peut se faire oui, mais bon après chargement / initialisation tu de ne devrais pas avoir à accéder en lecture à la géometrie.
    Et bien je suis en train de metre en place l'eclairage par vertex (tuto open gl sur les lumieres), et il m'est necessaire d'avoir acces a ces données pour calculer l'eclairage dynamic et ce constament (si les lumieres sont dynamic), ou j'ai mal compris quelque chose ?

    Citation Envoyé par Laurent Gomila
    Ca tu n'as pas à t'en soucier, c'est le driver qui gère.
    Pourais tu m'expliquer un peut, que ce passe t il si par exemple j'ai 64mb de memmoire CG, qu'un model fait 60mb et qu'un deuxime model fait 50mb (je sais c'est tres gros mais c'est juste un exemple) ? Le driver se charge de faire une espece de cache vers la ram ou un page file ?

    Merci de m'eclairer

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et bien je suis en train de metre en place l'eclairage par vertex (tuto open gl sur les lumieres), et il m'est necessaire d'avoir acces a ces données pour calculer l'eclairage dynamic et ce constament (si les lumieres sont dynamic), ou j'ai mal compris quelque chose ?
    Disons que ce n'est pas la meilleure méthode
    Au pire si tu as besoin des normales tu peux toujours en stocker une copie en mémoire système (ça évitera de dupliquer les autres composantes inutilement).

    Pourais tu m'expliquer un peut, que ce passe t il si par exemple j'ai 64mb de memmoire CG, qu'un model fait 60mb et qu'un deuxime model fait 50mb (je sais c'est tres gros mais c'est juste un exemple) ? Le driver se charge de faire une espece de cache vers la ram ou un page file ?
    C'est un peu ça oui. De toute façon il n'y a pas 36 solutions : il n'y a pas assez de place pour faire tenir les deux modèles en mémoire vidéo, donc à chaque fois qu'on a besoin de l'un ou l'autre il faut décharger / recharger. Et là ça tue un peu les perfs, quand même.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 53
    Par défaut
    Citation Envoyé par Laurent Gomila
    Disons que ce n'est pas la meilleure méthode
    Au pire si tu as besoin des normales tu peux toujours en stocker une copie en mémoire système (ça évitera de dupliquer les autres composantes inutilement)..
    Aie... j'avais peur de ce genre de reponses
    Alors comment ferais tu ?
    concretement j'ai un polygone que je dois eclairer par vertex lighting,
    a chaque fois que je dois updater la lumiere, hormis les normales, il faut bien que je recupere la couleur actuel du poly et que j'y applique la nouvell lumiere.
    Donc dans le cas actuel ca veut dire locker mon buffer, obtenir les infos de couleur , les updater et unlocker, ce qui est peut recommandable pour les performances.


    Citation Envoyé par Laurent Gomila
    C'est un peu ça oui. De toute façon il n'y a pas 36 solutions : il n'y a pas assez de place pour faire tenir les deux modèles en mémoire vidéo, donc à chaque fois qu'on a besoin de l'un ou l'autre il faut décharger / recharger. Et là ça tue un peu les perfs, quand même.
    Donc ici si j'ai bien compris, je n'ai rien a faire (j'aime assé cette idée), c'est le driver qui se charge de tout.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    concretement j'ai un polygone que je dois eclairer par vertex lighting
    Pourquoi ne pas laisser faire OpenGL si tu fais de l'éclairage par sommet ?

    Donc ici si j'ai bien compris, je n'ai rien a faire (j'aime assé cette idée), c'est le driver qui se charge de tout.
    Oui. Heureusement, car sinon ça signifierait donner à l'utilisateur plus d'accès à la mémoire vidéo, ce qui n'est pas forcément glop.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/09/2009, 11h38
  2. Comment "bien" faire ses CSS
    Par sliderman dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 30/06/2008, 20h38
  3. [Debutant] comment bien faire une variable ?
    Par nighthammer dans le forum iReport
    Réponses: 2
    Dernier message: 27/05/2008, 11h56
  4. comment bien faire organiser ses header
    Par DEVfan dans le forum C++
    Réponses: 43
    Dernier message: 29/04/2008, 11h58
  5. [MS/SQL 2K][Securité][Restauration]Comment bien faire ?
    Par jbat dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/04/2007, 11h18

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