Frage DirectX - Wie funktioniert der VertexBuffer?


Ich lerne gerade DirectX, ich habe viel über VertexBuffer gelesen. Da man vom Programmieren nicht nur durch Lesen lernen kann, mache ich eine kleine Engine mit DX11 (meine Frage ist nicht wirklich versionsabhängig)

Soweit ich in einem VertexBuffer verstanden habe, speichere ich Vertices, und tatsächlich speicher ich es auf der Grafikkarte. Nun, ich lese über dynamische und statische Puffer. Wenn ich richtig verstehe, wird ein statischer Puffer mit Scheitelpunkten initialisiert und die initialisierten Scheitelpunkte ändern sich nicht. OK, aber wann brauche ich es wirklich? Ich meine in einem Spiel oder was auch immer, wann habe ich konstante Ecken? Vielleicht für einige UI-Objekte ..? - Aber auch diese sind nicht immer konstant .. Sie können ihre 2D-Position verschieben ... usw.

Der nächste Punkt betrifft dynamische Vertexpuffer, zum Beispiel: Ich habe einen Puffer mit einigen Vertices, diese Vertices sind gezeichnet. Dann möchte ich einige Eckpunkte hinzufügen oder entfernen. Was nun .. Also würde ich einfach den Puffer "updaten". Aber ist das wirklich richtig und gut für die Leistung? Stellen Sie sich einen Terrain-Editor vor. Dort müssen Sie Tonnen von Scheitelpunkten aktualisieren.


5
2017-11-13 19:26


Ursprung


Antworten:


Ich meine in einem Spiel oder was auch immer, wann habe ich konstante Ecken?

Die ganze Zeit tatsächlich. Zum Beispiel, statische Geometrie, die UI-Objekte, die Sie erwähnt haben usw. Es gibt ein leichtes Missverständnis von Ihnen über bewegte Objekte, daher die Verwirrung - Sie bewegen keine Objekte, indem Sie ihre Scheitelpunkte ändern. Stattdessen werden Sie Ihre Scheitelpunkte durch die Shader-Pipeline setzen. Im Vertex-Shader können Sie beliebige Transformationen auf Ihre Stützpunkte anwenden. Wenn Sie zum Beispiel einen Baum haben, der aus irgendeinem Grund um die Welt bewegt wird (vielleicht auf einer schwebenden Insel oder etwas), ändern Sie nicht die Scheitelpunkte, aus denen der Baum besteht, sondern Sie ändern die Transformation, die auf die Scheitelpunkte angewendet wird .

Stellen Sie sich einen Terrain-Editor vor

Es hängt davon ab, was dein Terrain-Editor tun soll, aber im Allgemeinen wirst du die Eckpunkte hier nicht ändern. I.e. Wenn Sie die Höhe bearbeiten, anstatt die Scheitelpunkte nach oben und unten zu verschieben, schreiben Sie in eine Höhenkarte (meist eine Graustufenstruktur) und berechnen dann die Transformation auf der GPU in der Shader-Pipeline erneut.


7
2017-11-13 19:32