设备创build期间的DirectX 11 E_INVALIDARG

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

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,D3D11_SDK_VERSION,&swapChainDesc,&SwapChain,&d3d11Device,&d3d11DevCon); ID3D11Texture2D* BackBuffer; hr = SwapChain->GetBuffer( 0,__uuidof( ID3D11Texture2D ),(void**)(&BackBuffer) ); hr = d3d11Device->CreateRenderTargetView( BackBuffer,&renderTargetView );

C ++:在SIGINT之后继续执行

pipe道提供一个文件作为input到C程序

我如何减慢Windows上的TCP连接?

从任务pipe理器隐藏进程

编译器错误 – 可能的IDE错误“未定义的gettimeofday错误引用”

用D3D11_CREATE_DEVICE_DEBUG替换“Flags”参数(当前为NULL),你会在输出中得到一个可读的错误信息,告诉你什么是错的。

问题是抗锯齿(aaCount,aaQuality)的设置很高,有些系统无法处理,因此无法创建D3D11Device / Swapchain。

从评论中发现,设备创建失败的原因是多样本质量和/或计数不受支持的组合。 在创建设备之后,在使用D3D11CreateDevice函数创建D3D11CreateDevice之前,可以查询此支持,然后使用ID3D11Device::CheckMultisampleQualityLevels 。 之后,可以使用适当的参数创建交换链。

此外,还有一些基于功能级别的保证MSAA支持,因此,如果您在创建设备时需要某个功能级别,也可以验证MSAA参数(例如仍然使用D3D11CreateDeviceAndSwapChain函数)。 从CheckMultisampleQualityLevels文档中,这种有保证的支持是:

请注意,除了R32G32B32A32和R32G32B32之外,FEATURE_LEVEL_10_1设备需要支持所有渲染目标的4x MSAA。 FEATURE_LEVEL_11_0设备需要支持所有渲染目标格式的4x MSAA,以及除R32G32B32A32格式外的所有渲染目标格式的8x MSAA。

相关文章

Git安装和使用 Git安装和使用 刚开始用git的小白适用,,转自...
fatal: remote origin already exists.解决方法 第一个问题g...
git常用命令(二)查看历史记录 git log [--pretty=oneline]...
git之如何把本地文件上传到远程仓库的指定位置 git专栏收录该...
代码规范之 lint-staged 在代码提交之前,进行代码规则检查能...
方法:1、文件没有git操作时用“git checkout--文件”命令还...