public GpuBuffer(Device device, int itemSize, int itemCount) { StructSize = System.Runtime.InteropServices.Marshal.SizeOf <T>();// sizeof(T)), StructCount = itemCount * itemSize; ItemTotalSize = itemSize * StructSize; ItemCount = itemCount; Size = StructSize * itemSize * itemCount; Buffer = DXUtility.CreateBuffer(device, Size, ResourceUsage.Default, BindFlags.ShaderResource | BindFlags.UnorderedAccess, 0, ResourceOptionFlags.BufferStructured, StructSize); SRV = DXUtility.CreateShaderResourceView(device, Buffer, Format.Unknown, ShaderResourceViewDimension.Buffer, 0, 0, StructCount, 0); UAV = DXUtility.CreateUnorderedAccessView(device, Buffer, Format.Unknown, UnorderedAccessViewDimension.Buffer, 0, StructCount, 0, 0); }