Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1445 connectés 

  FORUM HardWare.fr
  Programmation

  [D3D] Technique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[D3D] Technique

n°83029
Alload
Posté le 19-12-2001 à 19:09:15  profilanswer
 

Pour afficher un objet 3D, on doit avoir en mémoire un Vertex Buffer d'où le programme va extraire les sommets, les normales, etc...
 
En fait je me demandais si, pour programmer un jeu par exemple où il faut que le rendu soit très rapide, les programmeurs avaient en mémoire un Vertex Buffer pour chaque objet, ou si ils avaient en mémoire les sommets, les normales, etc... de chaque objet qu'ils passaient dans un Vertex Buffer UNIQUE avant de l'afficher puis de recharger le Vertex Buffer avec un autre objet puis de l'afficher à nouveau, etc...
 
A mon avis, il vaut mieux avoir un Vertex Buffer par objet, car la place prise par celui-ci doit être à peu près égale à celle que prendrait les données séparées, et de plus copié à chaque fois les données dans un buffer prendrait beaucoup de temps.
 
Mais je voulais quand même connaître votre avis, peut-être qu'il y a d'autres mécanismes qui rentrent en compte.

mood
Publicité
Posté le 19-12-2001 à 19:09:15  profilanswer
 

n°83097
Alload
Posté le 19-12-2001 à 22:10:18  profilanswer
 

Personne n'a d'idée?

n°83101
LeGreg
Posté le 19-12-2001 à 22:33:58  profilanswer
 

reponse:  
ca depend.
 
ca depend des contraintes et ce que tu veux
faire avec ton moteur.
Un vertex buffer est notoirement
plus rapide quand il est en ecriture
seule. Donc si tu peux, tu le mets
en ecriture seule sauf si c'est un buffer
de pretraitement (par exemple tu veux
modifier les donnees transformees mais
c'est contre performant, a reserver
pour des effets tres speciaux et rares).
 
De plus un certain nombre de donnees  
sont dynamiques et changent a chaque frame.
(certaines formes de lod, vertex skinning
sans passer par les capacites de dx8).
 
Autre facteur a considerer
le switch entre vertex buffer
est couteux. Donc autant que possible
limiter ce switch surtout que ce n'est
pas la seule chose a changer
(renderstates, textures etc..)
entre les objets.
 
Donc limiter si possible le nombre
de vertex buffers (ceux de DX s'entend
tes donnees a toi tu les stockes comme
tu veux). Si possible utiliser
du padding pour rendres les formats
de vertex compatibles et donc limiter
les switchs. Mettre les donnees
de vertex dans un ordre de lecture lineaire
surtout s'ils ne sont pas alignes sur 32 ou 64  
bits. utiliser les indices et les caches
de vertex si possible. optimiser les strips.
etc... etc..  
 
Evidemment si tu te fous de la performance
tu fais comme tu veux c'est beaucoup
moins prise de tete.
 
A+
LEGREG


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [D3D] Technique

 

Sujets relatifs
[D3D] Problème avec les matériaux[D3D] Bouger la caméra
[D3D] Comment utiliser le Z Buffer?D3D : y a ti bien qqun ki va m'aider .
[D3D] Problème avec les matériaux[D3D] Liste de sommets normales ou indexées?
Heeelppppp me D3D !![PHP] EasyPHP - Question technique
Moteur 3D, D3D OpenGL et concepteursQuestion technique MySQL
Plus de sujets relatifs à : [D3D] Technique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR