DirectX – Comment fonctionne le VertexBuffer?

J’apprends DirectX maintenant, je lis beaucoup sur VertexBuffer. Puisque vous ne pouvez pas apprendre de la programmation en lisant simplement, je fabrique un petit moteur avec DX11 (ma question ne dépend pas vraiment de la version)

Si j’ai bien compris dans un VertexBuffer, je stocke les Vertices et je les stocke sur la carte graphique. Eh bien, j’ai lu sur les tampons dynamics et statiques. Donc, si je comprends bien, un tampon statique est initialisé avec des sumts et les sumts initialisés ne changeront pas. OK mais quand est-ce que j’en ai vraiment besoin? Je veux dire dans un jeu ou autre chose, quand ai-je des sumts constants? Peut-être pour certains objects d’interface utilisateur? – mais même ceux-ci ne sont pas constants à chaque fois .. vous pouvez déplacer leur position 2D … etc.

Le point suivant concerne les tampons de sumts dynamics, par exemple: J’ai un tampon avec quelques sumts, ces sumts sont dessinés. Ensuite, je veux append ou supprimer des sumts. Quoi maintenant .. Donc, je voudrais simplement “mettre à jour” le tampon. Mais est-ce vraiment bien et bon pour la performance? Imaginez un éditeur de terrain. Là, vous devez mettre à jour des tonnes de sumts.

Je veux dire dans un jeu ou autre chose, quand ai-je des sumts constants?

Tout le temps en fait. Par exemple, la géomésortinge statique, les objects d’interface utilisateur que vous avez mentionnés, etc. Il y a un léger malentendu concernant les objects en mouvement, d’où la confusion – vous ne déplacez pas d’objects en changeant leurs sumts. Au lieu de cela, vous placerez vos sumts dans le pipeline de shader. Dans le vertex shader, vous pouvez appliquer des transformations arbitraires à vos sumts. Ainsi, par exemple, si vous avez un arbre déplacé dans le monde entier pour une raison quelconque (peut-être sur une île flottante ou autre), plutôt que de modifier les sumts qui composent l’arbre, vous modifiez la transformation appliquée aux sumts. .

Imaginez un éditeur de terrain

Cela dépend de ce que votre éditeur de terrain est censé faire, mais généralement vous n’allez pas changer les sumts ici. Par exemple, lors de la modification de la hauteur, plutôt que de déplacer les sumts de haut en bas, vous écrivez sur une carte de hauteur (la plupart du temps une texture en niveaux de gris) et calculez à nouveau la transformation sur le GPU du pipeline de shader.