2017-07-11 2 views
1

Ich möchte einen Vertex-Puffer mit variant Größe für desc.ByteWidth erstellen, wie im Folgenden gezeigt. Wie macht man das? Vielen Dank.Erstellen Sie einen Vertex-Puffer mit einer Variantengröße

D3D11_BUFFER_DESC desc; 
ZeroMemory(&desc, sizeof(desc));`enter code here` 
desc.Usage = D3D11_USAGE_DYNAMIC; 
desc.ByteWidth = size;//make it variant 
desc.BindFlags = D3D11_BIND_VERTEX_BUFFER; 
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; 
d3dDevice->CreateBuffer(&desc, initialVertexData, &vertexBuffer); 
+0

Bitte erläutern Sie das Problem, das Sie haben. Was hast du erwartet und was ist passiert? Was funktioniert nicht? –

Antwort

0

Puffergröße und Beschreibung in DirectX11 fixiert sind auf der Erstellungszeit, das heißt, wenn Sie eine dieser Parameter (Größe/Nutzung) aktualisieren müssen, müssen Sie diesen Puffer lösen und einen neuen erstellen.

Wenn Sie jedoch dynamische Datenmenge hochladen möchten, können Sie einen Puffer „groß genug“, erstellen Sie und nur ein Teil davon laden (als Puffer dynamisch ist, können Sie es über die Map Funktion tun.

Es ist völlig nur einen kleinen Teil davon füllen gelassen und dann eine Zeichenfunktion verwenden, die nur eine teil~~POS=TRUNC der Daten verwendet.

zum Beispiel der Draw Funktion.

Wenn Sie Puffergröße Für 32 Scheitelpunkte können Sie weiterhin verwenden:

devicecontext.Draw(5, 0); 

Dies wird nur die ersten 5 Scheitelpunkte zeichnen, unabhängig von der Gesamtgröße.

Verwandte Themen