我之前已经在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 : An open/create operation completed while an oplock break is underway.
错误代码查找指向:
ERROR_TOO_MANY_POSTS 298 (0x12A)
奇怪的是几天前事情还在进行,也许是Windows更新打破了它...
谢谢
最佳答案
D3D12_COMMAND_QUEUE_DESC
已正确初始化,问题似乎在于IID_PPV_ARGS
的使用,因为使用IID_ID3D12CommandQueue
和(void**)&(*ppCmdQueue)
的旧方法很好。
还有我的交换链问题,我忘记了使用> = 2的值初始化缓冲区计数。
关于c++ - DX12初始化失败VS2019,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60718019/