DirectX11将当前backbuffer作为资源传递给像素着色器

时间:2013-11-20 08:25:49

标签: directx hook

我正在尝试直接使用3d 11“当前”函数钩子并将当前的后备缓冲区和当前的z-buffer(深度模板)作为纹理传递给我的像素着色器。

我在我的钩子“现在”功能中使用以下代码:

ID3D11RenderTargetView* pRT = NULL;
ID3D11DepthStencilView* pDS = NULL;
pContext->OMGetRenderTargets(1, &pRT, &pDS);
if (pRT != NULL)
{
        ID3D11Texture2D* pBackBuffer = NULL;
    pSwapChain->GetBuffer(0, __uuidof(*pBackBuffer), (LPVOID*)&pBackBuffer);
    D3D11_TEXTURE2D_DESC bbDesc;
    pBackBuffer->GetDesc(&bbDesc);

        ID3D11ShaderResourceView* g_refRes = NULL;
        D3D11_SHADER_RESOURCE_VIEW_DESC shaderResourceViewDesc;

    shaderResourceViewDesc.Format = bbDesc.Format;
    shaderResourceViewDesc.ViewDimension = D3D_SRV_DIMENSION_UNKNOWN;
    shaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
    shaderResourceViewDesc.Texture2D.MipLevels = bbDesc.MipLevels;

    hr = d3d11Device->CreateShaderResourceView(pBackBuffer, &g_shaderResourceViewDesc, &g_refRes);


    d3d11DevCon->PSSetShaderResources(0, 1, &g_refRes);

 }

但是当我调用CreateShaderResourceView()时,我得到了E_INVALID_ARG。

任何人都可以帮我解决如何通过当前的backbuffer& z-buffer作为像素着色器的纹理?

非常感谢。

0 个答案:

没有答案