Direct3D11 でインスタンス化されたジオメトリを作成しようとしていますID3D11DeviceContext1->Map()
が、インスタンス バッファーを更新しようとすると、「無効なパラメーター」という非常に役立つエラーで呼び出しが失敗します。
バッファーはメンバー変数として宣言されます。
Microsoft::WRL::ComPtr<ID3D11Buffer> m_instanceBuffer;
次に、それを作成します(成功します):
D3D11_BUFFER_DESC instanceDesc;
ZeroMemory(&instanceDesc, sizeof(D3D11_BUFFER_DESC));
instanceDesc.Usage = D3D11_USAGE_DYNAMIC;
instanceDesc.ByteWidth = sizeof(InstanceData) * MAX_INSTANCE_COUNT;
instanceDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
instanceDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
instanceDesc.MiscFlags = 0;
instanceDesc.StructureByteStride = 0;
DX::ThrowIfFailed(d3dDevice->CreateBuffer(&instanceDesc, NULL, &m_instanceBuffer));
ただし、マップしようとすると:
D3D11_MAPPED_SUBRESOURCE inst;
DX::ThrowIfFailed(d3dContext->Map(m_instanceBuffer.Get(), 0, D3D11_MAP_WRITE, 0, &inst));
マップ呼び出しは で失敗しE_INVALIDARG
ます。NULL
これは私の最初の D3D アプリの 1 つであり、追跡するために次に何をすべきか現在困惑しています。バッファを間違って作成しているに違いないと思っていますが、方法がわかりません。任意の入力をいただければ幸いです。