c++ - DirectX 11 E_INVALIDARG 在设备创建期间

标签 c++ windows directx

创建 d3d11 设备和交换链的代码无法在某些计算机上运行并返回 E_INVALIDARG 错误。 对于具有相同版本 DirectX 的计算机,这也有所不同。 我似乎找不到不同行为的原因。

DXGI_MODE_DESC bufferDesc;
ZeroMemory(&bufferDesc, sizeof(DXGI_MODE_DESC));
bufferDesc.Width = width;
bufferDesc.Height = height;
bufferDesc.RefreshRate.Numerator = 60;
bufferDesc.RefreshRate.Denominator = 1;
bufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
bufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
bufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;

DXGI_SWAP_CHAIN_DESC swapChainDesc;
ZeroMemory(&swapChainDesc, sizeof(DXGI_SWAP_CHAIN_DESC));
swapChainDesc.BufferDesc = bufferDesc;
swapChainDesc.SampleDesc.Count = aaCount;
swapChainDesc.SampleDesc.Quality = aaQuality;
swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
swapChainDesc.BufferCount = 1;
swapChainDesc.OutputWindow = *hwnd; 
swapChainDesc.Windowed = TRUE; 
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;

//results in E_INVALIDARG in some cases
hr = D3D11CreateDeviceAndSwapChain(
    nullptr,                        
    D3D_DRIVER_TYPE_HARDWARE,       
    nullptr,                        
    NULL,
    nullptr,
    NULL,
    D3D11_SDK_VERSION,
    &swapChainDesc,
    &SwapChain,                 
    &d3d11Device,               
    nullptr,
    &d3d11DevCon);              

ID3D11Texture2D* BackBuffer;
hr = SwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), (void**)(&BackBuffer) );

hr = d3d11Device->CreateRenderTargetView( BackBuffer, nullptr, &renderTargetView );

最佳答案

用 D3D11_CREATE_DEVICE_DEBUG 替换“Flags”参数(当前为 NULL),您将在输出中收到一条人类可读的错误消息,告诉您哪里出了问题。

关于c++ - DirectX 11 E_INVALIDARG 在设备创建期间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31374780/

相关文章:

DirectX 11 编译单个 HLSL 文件(无效果)

c++ - 我如何在 C++ 和 Flash 之间进行通信?

c++ - lua返回字符串c++

c++ - MATLAB Coder hello world 从头到尾

c++ - 从 vector 中删除指针

c++ - Qt 最小部署

windows - 如何解决 TortoiseGitPlink fatal error ?

c++ - 当我运行书中的演示项目时,Directx 12 说找不到指定的路径

c++ - 使用什么 MPEG4 编码器库?

c++ - 使 std::map key const 有意义吗?