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 :

Level Of Detail et autres


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut Level Of Detail et autres
    Bonjour à tous.

    Tout est dans le titre : quelle est la meilleure méthode pour implémenter un LOD (au niveau des vertex).

    Bon je vais d'abord préciser un peu ma technique de rendu.
    Mon terrain est constitué de tiles. Je découpe ce terrain en "mini-terrains" de N*N tiles au maximum. Par exemple pour un terrain de 129*129 et un découpage de 64*64, j'ai quatre mini-terrains de 64*64, deux de 1*64, deux de 64*1 et un de 1*1 .
    Mes vertex sont classé de la manière suivante (toujours le même exemple du terrain de 129*129):
    _ 1er mini-terrain 64*64 : indices : 0 - 1 - 2 ... - 99
    _ 2eme mini-terrain 64*64: indices : 100 - 101 - 102 ... - 199
    _ etc
    _ 1er mini-terrain de 1*64 : indices : 500 - 501 - 502 ... - 574
    _ 2me mini-terrain de 1*64 : indices : 575 - 576 - 577 ... - 649

    Celà me permet de minimiser la taille de mes IB. En effet pour afficher le 1er mini-terrain je vais lui envoyer les indices 0-1-...-99. Pour le deuxieme, je lui envoye 0-1-...-99 plus un offset de 100 ( paramètres BaseVertexIndices je crois). J'ai ainsi un IB de taille très petite (au vu de la taille de mon terrain) et je n'ai qu'à mémoriser l'indice de départ et l'offset pour chaque mini-terrain. Par contre je dois utiliser un DrawIndexedPrimitive par mini-terrain. Je me suis dis à l'époque que de toute façon c'était plus rapide que de prendre un IB dynamique et de l'actualiser à chaque fois.

    Bon, maintenant passons au niveau LOD. J'ai deux solutions.
    _ Je crée plusieurs IB (un par LOD) et j'envoye le bon lors du rendu.
    _ J'en crée un dynamique.

    1ere solution : OK pas de problèmes. Par contre, j'ai toujours plusieurs DrawIndexedPrimitive et la doc conseille de minimiser le nombre d'appel...

    2eme solution: De nouveaux deux solutions s'offrent à moi:
    _ je garde ma technique de découpage afin de garder mon IB petits (mais encore une fois, j'aurais plusieurs DrawIndexedPrimitive)
    _ j'utilise un unique IB. Grâce au LOD, le nombre d'indices reste faible (mais quand même beaucoup plus gros qu'avec ma technique) et je n'ai qu'un DrawIndexedPrimitive.

    Bref, quel sont les influences entre :
    taille des IB / Nombre de DrawPrimitive / Buffer dynamique.

    S'il faut plus de détails, y a qu'à demander.
    Si vous avez d'autres idées, commentaires, retour d'expérience, n'hésitez pas je suis preneur.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 267
    Par défaut
    Autre question.

    Dans la doc, on conseille de créer un unique gros vertexbuffer pour les objets statiques. J'avais donc appliqué la méthode en créant aussi un seul gros indexbuffer.
    Mais cette après-midi, j'ai testé en créant un indexbuffer pour chaque mini-terrain (pour simplifier, on peut assimiler les mini-terrains à l'étage inférieur d'un quadtree). Et le FPS était bien meilleur. Sera-ce pareil (drôle de conjugaison...) si je crée un vertexbuffer par mini-terrain.

    Pour poser la question en d'autres termes, lorsqu'on si on partitionne l'éspace en utilisant un quadtree ou un octree, doit-on créer un vertex buffer et/ou indexbuffer par partie?

    Précision: mon terrain fait 1024*1024 et mes mini-terrains 32*32. J'en ai donc beaucoup et en fonctionnement classique, je n'en affiche pas la moitié.

Discussions similaires

  1. ListView detaillée qui renvoie vers une autre Listview
    Par dandy-kun dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 05/05/2015, 11h34
  2. [CR 2008] Section Details : alterner la mise en forme d'une ligne à l'autre
    Par mohamed301084 dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 27/03/2010, 18h55
  3. Level of detail
    Par abzal dans le forum OpenGL
    Réponses: 12
    Dernier message: 11/08/2009, 15h20
  4. Réponses: 1
    Dernier message: 04/09/2008, 21h22
  5. afficher le detail de la recherche sur une autre page
    Par super-java dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2007, 17h02

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