2017-07-11 17 views
1

次のように、desc.ByteWidthのバリアントサイズを持つ頂点バッファを作成します。これを行う方法? ありがとうございました。 DirectX11でバリアントサイズの頂点バッファを作成する

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

あなたが持っている問題を明確に説明してください。あなたは何を期待し、何が起こったのですか?何が効いていないのですか? –

答えて

0

バッファサイズと説明が作成時間に固定されている、それはあなたがそれらのパラメータ(サイズ/使用量)のいずれかを更新する必要がある場合、あなたはこのバッファを解放し、新しいものを作成する必要があるということです。あなたは、データの動的な量をアップロードする場合

しかし、あなたは「十分に大きい」バッファを作成することができ、かつ唯一Map機能を経由して、あなたのバッファが動的であるとして、あなたがそれを行う(その一部をアップロードします。

それは完全にこののほんの一部を埋めるために許可され、その後、データのみのサブセットを使用して描画機能を使用している。

例えば、Draw機能を使用して。

あなたがサイズをバッファした場合であります32頂点の場合でも、次のように使用できます。

devicecontext.Draw(5, 0); 

これは、合計サイズに関係なく、最初の5つの頂点のみを描画します。

関連する問題