gpt4 book ai didi

c++ - 如何取消绑定(bind) RenderTarget 纹理,以便它可以用作下一个 channel 的输入

转载 作者:搜寻专家 更新时间:2023-10-31 01:39:17 31 4
gpt4 key购买 nike

我有一个纹理及其 shaderresourceview,我通过将其用作 RenderTarget 来渲染场景的原始图像。

就像我之前的数百万人一样,然后我将它用作我下一个着色器的输入,这样我就可以模糊、进行 HDR,所有这些。

这个简单但“对我来说是新手”的问题是,当我去调用 PSSetShaderResources 并将纹理放入着色器的纹理/常量缓冲区时,我得到了这个错误:

"Resource being set to PS shader resource slot 0 is still bound on output"

...这是有道理的,因为它可能仍然是。我的问题是如何取消绑定(bind)纹理使其不再是初始 channel 的渲染目标?

我已经在这样做了,我认为这会将它设置回 DXUT 一开始使用的原始 RenderTargetView,但它似乎并没有释放纹理:

ID3D11RenderTargetView * renderTargetViewArrayTQ[1] = { DXUTGetD3D11RenderTargetView() };
pd3dImmediateContext->OMSetRenderTargets(1, renderTargetViewArray, nullptr);

最佳答案

假设您的渲染目标位于插槽 0 中:

ID3D11RenderTargetView* nullRTV = nullptr;d3dContext->OMSetRenderTargets(1, &nullRTV, nullptr);

您需要传递一个长度为 1 的 ID3D11RenderTargetView* 数组,第一个数组需要为 nullptr。

关于c++ - 如何取消绑定(bind) RenderTarget 纹理,以便它可以用作下一个 channel 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31465882/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com