If you want to unbind a shader resource in directx11, all code I've found does something along these lines:
ID3D10ShaderResourceView* nullSRV[1] = {nullptr};
context->PSSetShaderResources(0, 1, &nullSRV);
Why not simply use this?
context->PSSetShaderResources(0, 0, nullptr);
It seems supported by the docs (https://msdn.microsoft.com/en-us/library/windows/desktop/ff476473%28v=vs.85%29.aspx), is there really any difference between the two?
In the first case, you are unbinding one SRV, starting in slot zero. In the second case, you are not unbinding anything because NumViews
is zero. If you wanted to unbind in the second case, you'd have to use:
context->PSSetShaderResources(0, 1, nullptr);
However, this will cause the runtime to crash:
D3D11 CORRUPTION: ID3D11DeviceContext::PSSetShaderResources: Third parameter corrupt or unexpectedly NULL. [ MISCELLANEOUS CORRUPTION #15: CORRUPTED_PARAMETER3]
This is why the first form is used.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With