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

DirectX Discussion :

Modifier un vertex buffer? (débutant)


Sujet :

DirectX

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Modifier un vertex buffer? (débutant)
    Bonjour.

    Je connais pas mal le C++ et je voulais me mettre au DirectX. La doc du SDK est pas mal mais je galere quand meme sur certains points et nottamment le point qui va faire l'objet de ma question :

    J'ai disons un objet "Cube". Celui ci posede un index buffer avec ses sommets qui sont dans un vertex buffer. Donc j'affiche cela ca marche niquel. Par contre la ou je sais vraiment pas comment faire c'est pour le deplacer. Apparement dans les tutos de DirectX ils appliquent une transfo grace à la matrice monde avant de rendre pour effectuer cela. Mais c'est un peu lourd d'appliquer une transformation pour chaque objet à rendre non? D'ou ma question : est-il possible d'appliquer en quelque sorte cette matrice définitivement sur mon vertex buffer? Parce que la seule solution que j'ai trouvé à l'heure actuelle est de faire ma propre instance du vertex buffer en mémoire systeme et de travailler dessus, ensuite de tout copier dans le vertex buffer de DirectX, ce qui n'est pas tres elegant (et ne doit pas non plus etre tres rapide). En plus ca me fait réinventer l'eau chaude puisque tout ce qui est matrice de rotations et autres est à reprogrammer.

    Si quelqun a une solution à ce probleme qui ne doit pas etre tres compliqué en fin de compte...

  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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Apparement dans les tutos de DirectX ils appliquent une transfo grace à la matrice monde avant de rendre pour effectuer cela. Mais c'est un peu lourd d'appliquer une transformation pour chaque objet à rendre non?
    Pas forcément. Le jour où tu voudras gérer plusieurs instances du même modèle, tu ne vas pas t'amuser à créer une copie de tes sommets pour chaque instance, tu utiliseras bien la même géometrie couplée à des matrices de transformation différentes.

    D'ou ma question : est-il possible d'appliquer en quelque sorte cette matrice définitivement sur mon vertex buffer? Parce que la seule solution que j'ai trouvé à l'heure actuelle est de faire ma propre instance du vertex buffer en mémoire systeme et de travailler dessus, ensuite de tout copier dans le vertex buffer de DirectX, ce qui n'est pas tres elegant (et ne doit pas non plus etre tres rapide)
    Tu n'es pas obligé de passer par une copie du vertex buffer en mémoire système.

    En plus ca me fait réinventer l'eau chaude puisque tout ce qui est matrice de rotations et autres est à reprogrammer.
    Qu'est-ce que tu veux dire ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ben ca veut dire que les matrices c'est pas exactement mon fort et que je suis bien content d'avoir les matrices de directX (et les fonctions genre D3DXMatrixRotationY) alors que si je dois modifier moi meme mon vertex buffer ben je vois pas vraiment comment on applique une matrice sur un vertex buffer donc je devrais refaire des fonctions qui modifient les points de mon vertex buffer pour effectuer, par exemple, une rotation. Ce qui ne m'inspire que moyennement .

    Mais tu dis que c'est pas lourd (niveau performances) d'appliquer des matrices à tout vent pour déplacer mes cubes? parce qu'a ce moment en effet c'est beaucoup plus simple j'ai juste à faire une matrice par cube et un vertex buffer et un index buffer commun a tous les cubes, Au moment du render j'applique ma matrice en place de matrice monde. C'est quelque chose qui tient debout ca? Moi ca m'avait paru bizare car appliquer une matrice monde affecte toute la scene et moi je m'interesse qu'à mon cube.

  4. #4
    Membre confirmé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Points : 504
    Points
    504
    Par défaut
    Citation Envoyé par Myrhev
    Mais tu dis que c'est pas lourd (niveau performances) d'appliquer des matrices à tout vent pour déplacer mes cubes?
    Non c'est pas lourd, c'est ce qu'il faut faire

    Citation Envoyé par Myrhev
    Au moment du render j'applique ma matrice en place de matrice monde. C'est quelque chose qui tient debout ca?
    Tout à fait

    Citation Envoyé par Myrhev
    Moi ca m'avait paru bizare car appliquer une matrice monde affecte toute la scene et moi je m'interesse qu'à mon cube.
    Non la matrice "monde" sert à définir l'objet à qui appartient la matrice dans le monde... grosso modo la matrice monde est bien la matrice de rendu de ton objet et de lui seul

    __________________________
    Mon Site

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Oki merci bcp pour ttes ces reponces

  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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ben ca veut dire que les matrices c'est pas exactement mon fort et que je suis bien content d'avoir les matrices de directX (et les fonctions genre D3DXMatrixRotationY) alors que si je dois modifier moi meme mon vertex buffer ben je vois pas vraiment comment on applique une matrice sur un vertex buffer donc je devrais refaire des fonctions qui modifient les points de mon vertex buffer pour effectuer, par exemple, une rotation. Ce qui ne m'inspire que moyennement
    Jette un oeil du côté des fonctions D3DXVec3TransformXXXXX.

    Mais tu dis que c'est pas lourd (niveau performances) d'appliquer des matrices à tout vent pour déplacer mes cubes? parce qu'a ce moment en effet c'est beaucoup plus simple j'ai juste à faire une matrice par cube et un vertex buffer et un index buffer commun a tous les cubes, Au moment du render j'applique ma matrice en place de matrice monde. C'est quelque chose qui tient debout ca? Moi ca m'avait paru bizare car appliquer une matrice monde affecte toute la scene et moi je m'interesse qu'à mon cube.
    Ca dépend de ce que tu veux afficher.

    S'il s'agit de N cubes qui ne bougeront jamais -> tu transformes tes N cubes et tu les colles dans un gros vertex buffer pour rendre ta scène en un appel.
    S'il s'agit de N cubes qui bougent -> utilise un vertex buffer et N matrices de transformation. Il est bien moins coûteux d'envoyer une matrice world que de modifier un vertex buffer à la volée.
    Ton appli ne rend vraiment que des cubes -> peu importe, tu es bien loin d'exploser ta carte graphique (sauf si tu fais du voxel ou quelque chose dans le genre).

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

Discussions similaires

  1. pb Affichage Vertex buffer
    Par mushishi dans le forum DirectX
    Réponses: 11
    Dernier message: 28/03/2006, 03h07
  2. [Debutant] Affichage du contenu d'un vertex buffer
    Par Edouard Kaiser dans le forum DirectX
    Réponses: 12
    Dernier message: 20/12/2005, 10h26
  3. Vertex buffer et géométrie complexe
    Par Omeyocan dans le forum DirectX
    Réponses: 13
    Dernier message: 14/12/2005, 11h28
  4. Probleme avec le vertex buffer
    Par nicoo dans le forum DirectX
    Réponses: 12
    Dernier message: 19/10/2004, 21h45
  5. question sur les vertex buffer et index buffer
    Par airseb dans le forum DirectX
    Réponses: 9
    Dernier message: 25/08/2003, 02h38

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