首页 > 解决方案 > DX12 初始化失败 VS2019

问题描述

我之前在DX10/11/12中做过很多次初始化步骤,突然在VS2019中DX12除了以下对象之外什么都不会创建:ID3D12Debug, ID3D12InfoQueue, ID3D12Device2.

即使直接创建命令队列也会失败:

    bool DX12ObjectFactory::CreateCommandQueue(ID3D12Device* pDevice, __out 
    ID3D12CommandQueue** ppCmdQueue, const D3D12_COMMAND_QUEUE_DESC& queueCreateDesc)
    {
        OnFailedThrow(pDevice->CreateCommandQueue(&queueCreateDesc, 
        IID_PPV_ARGS(&*ppCmdQueue)));
        return true;
    }

HRESULT消息是:

hr = 0x00000108:在 oplock 中断正在进行时打开/创建操作完成。

错误代码查找指向:ERROR_TOO_MANY_POSTS 298 (0x12A)

奇怪的是几天前一切正常,也许是 Windows 更新破坏了它......

谢谢

标签: c++windows-10directxdirectx-12

解决方案


D3D12_COMMAND_QUEUE_DESC已正确初始化,问题似乎是使用IID_PPV_ARGS,因为旧的使用方式很好IID_ID3D12CommandQueue, (void**)&(*ppCmdQueue)

还有我的交换链问题,我忘记用 >= 2 的值初始化缓冲区计数。


推荐阅读