However, OutputMerger.SetUnorderedAccessView is the ONLY method that resets all previously bound UAVs and SRVs! This is because internally, that method is just a wrapper around a call to SetRenderTargetsAndUnorderedAccessViews, which resets all the bound resources according to the comments in the source file:
This is extremely confusing. It took me days to figure out why my UAVs weren't all bound correctly. I suggest removing that method entirely, forcing people to use SetUnorderedAccessViews instead. That method is more obvious because you give it all the UAVs at once.
There are a couple of functions in SharpDX that have a similar signature:
However, OutputMerger.SetUnorderedAccessView is the ONLY method that resets all previously bound UAVs and SRVs! This is because internally, that method is just a wrapper around a call to SetRenderTargetsAndUnorderedAccessViews, which resets all the bound resources according to the comments in the source file:
https://github.com/sharpdx/SharpDX/blob/master/Source/SharpDX.Direct3D11/DeviceContext.OutputMergerStage.cs
This is extremely confusing. It took me days to figure out why my UAVs weren't all bound correctly. I suggest removing that method entirely, forcing people to use SetUnorderedAccessViews instead. That method is more obvious because you give it all the UAVs at once.