【问题标题】:Unable to create a DX11 render target view无法创建 DX11 渲染目标视图
【发布时间】:2015-05-08 16:55:30
【问题描述】:

我正在尝试开始使用 DirectX 11 游戏编程,但由于某种原因,我根本无法使用 ID3D11Device::CreateRenderTargetView() 创建渲染目标视图。

(顺便说一句,我使用 VS for Desktop 2013,我的 GPU 支持的最高功能级别是 11_0。我运行的是 Windows 8.1。)

这是我认为相关的代码:

D3D11_TEXTURE2D_DESC backBufferDesc;
    ZeroMemory(&backBufferDesc, sizeof(backBufferDesc));
    backBufferDesc.ArraySize = 1;
    backBufferDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
    backBufferDesc.CPUAccessFlags = 0;
    backBufferDesc.Format = DXGI_FORMAT_R32_FLOAT;
    backBufferDesc.Height = nHeight;
    backBufferDesc.Width = nWidth;
    backBufferDesc.MipLevels = 1;
    backBufferDesc.MiscFlags = 0;
    backBufferDesc.SampleDesc.Count = 1;
    backBufferDesc.SampleDesc.Quality = 0;
    backBufferDesc.Usage = D3D11_USAGE_DEFAULT;

    ID3D11Texture2D* backBufferTexture;
    result = d3dDevice_ -> CreateTexture2D(&backBufferDesc, 0, &backBufferTexture);
    if (FAILED(result))
    {
        MessageBox(0, "Failed to create the back buffer texture!", "DirectX Error", MB_OK);
        return false;
    }

    result = swapChain_->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&backBufferTexture);
    if (FAILED(result))
    {
        MessageBox(0, "Failed to get the swap chain back buffer!", "DirectX Error", MB_OK);
        return false;
    }

    D3D11_RENDER_TARGET_VIEW_DESC rtvDesc;
    ZeroMemory(&rtvDesc, sizeof(rtvDesc));
    rtvDesc.Format = backBufferDesc.Format;

    result = d3dDevice_->CreateRenderTargetView(backBufferTexture, &rtvDesc, &backBufferTarget_);
    if (backBufferTexture)
        backBufferTexture->Release();
    if (FAILED(result))
    {
        MessageBox(0, "Failed to create the render target view!", "DirectX Error", MB_OK);
        return false;
    }

【问题讨论】:

    标签: directx texture2d rendertarget


    【解决方案1】:

    使用调试设备会给您一个人类可读的错误。

    根据我对代码的阅读,您尚未填写 rtvDesc 的 ViewDimension 字段。

    【讨论】:

    • 原来我什至不需要 rtvDesc。这是 swapChainDesc 的一个参数设置不正确。不过还是谢谢。
    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多