DirectX D3D11CreateDeviceAndSwapChain returning E_INVALIDARG

DirectX D3D11CreateDeviceAndSwapChain returning E_INVALIDARG

本文关键字:INVALIDARG returning D3D11CreateDeviceAndSwapChain DirectX      更新时间:2023-10-16

我有以下调用,无论我尝试什么,hresult总是E_INVALIDARG:

LogMessage(L"Creating swap chain. Emulation: " + std::to_wstring(useSoftwareEmulation) + L", Debugging: " + std::to_wstring(enableRenderDebugging));
HRESULT hresult = D3D11CreateDeviceAndSwapChain(
    (useSoftwareEmulation ? NULL : currentAdapter), 
    (useSoftwareEmulation ? D3D_DRIVER_TYPE_WARP : D3D_DRIVER_TYPE_UNKNOWN), 
    NULL, 
    (enableRenderDebugging ? D3D11_CREATE_DEVICE_DEBUG | D3D11_CREATE_DEVICE_DEBUGGABLE : 0),
    NULL,
    0,
    D3D11_SDK_VERSION,
    &swapChainDescriptor, 
    &swapChain,
    &graphicsCardInterface, 
    &runningFeatureLevel, 
    &graphicsCardContext
    );

根据上面的日志行,useSoftwareEmulationenableRenderDebugging都是的。

所有其他变量的类型如下:

currentAdapter是一个IDXGIAdapter*

swapChainDescriptor是一个DXGI_SWAP_CHAIN_DESC

swapChain是一个IDXGISwapChain*

graphicsCardInterface是一个ID3D11Device*

runningFeatureLevel是一个D3D_FEATURE_LEVEL

graphicsCardContext是一个ID3D11DeviceContext*

误报:我的交换链描述符中出现错误(即我的 MSAA 计数和质量值被交换)。

希望这将来帮助将来的其他人。