//=============================================================================
// Buffer<int3> input : register(t0);
inputBuffer = new Buffer(device, new BufferDescription()
{
StructureByteStride = Int3.SizeInBytes,
SizeInBytes = N * Int3.SizeInBytes,
Usage = ResourceUsage.Dynamic, // the cpu can write to it.
BindFlags = BindFlags.ShaderResource, // will be read-only by the GPU.
CpuAccessFlags = CpuAccessFlags.Write,
OptionFlags = ResourceOptionFlags.None,
});
// srView to our unput buffer
var srViewDesc = new ShaderResourceViewDescription();
srViewDesc.Format = Format.R32G32B32_SInt;
srViewDesc.Dimension = ShaderResourceViewDimension.Buffer;
srViewDesc.Buffer.FirstElement = 0;
srViewDesc.Buffer.ElementCount = N;
ShaderResourceView srView = new ShaderResourceView(device, inputBuffer, srViewDesc);
//=============================================================================
The error appears the second time i call UnmapSubresource
(I have a makeshift 'loop', using a goto statement)
//=============================================================================
DataStream dataStream;
context.MapSubresource(inputBuffer, MapMode.WriteDiscard, SharpDX.Direct3D11.MapFlags.None, out dataStream);
for(int i = 0; i < N; i++)
dataStream.Write(input);
context.UnmapSubresource(inputBuffer, 0);
dataStream.Dispose();
//=============================================================================
It works with single integers, two integers, and 4. But with 3, it crashes on the second attempt to update the buffer.
p.s. yeah, this is in SharpDX, on a D3D10 card.