2017-07-11 1 views
1

Je souhaite créer un tampon de vertex avec la taille de variante pour desc.ByteWidth comme indiqué ci-dessous. Comment faire ça? Merci beaucoup.Création d'un tampon de vertex avec une taille de variante

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

Veuillez expliquer clairement le problème que vous rencontrez. Qu'attendiez-vous et que s'est-il passé? Qu'est-ce qui ne fonctionne pas? –

Répondre

0

taille du tampon et une description dans DirectX11 sont fixés sur le temps de création, cela signifie que si vous avez besoin de mettre à jour l'un de ces paramètres (taille/utilisation), vous devez libérer ce tampon et de créer un nouveau.

Cependant, si vous souhaitez télécharger quantité dynamique de données, vous pouvez créer un tampon « assez grand », et seulement télécharger une partie (comme tampon est dynamique, vous le faites via la fonction Map.

Il est tout à fait autorisé à remplir une petite partie seulement de cela, puis utiliser une fonction de tirage qui utilise uniquement un sous-ensemble des données.

Par exemple, en utilisant la

fonction Draw. Si vous taille de mémoire tampon est pour 32 sommets, vous pouvez toujours utiliser:

devicecontext.Draw(5, 0); 

Ceci dessine seulement les 5 premiers sommets, quelle que soit la taille totale.