DXGI ERROR: IDXGIFactory::CreateSwapChain: Flip model swapchains (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL and DXGI_SWAP_EFFECT_FLIP_DISCARD) do not support multisampling. DXGI_SWAP_CHAIN_DESC{ SwapChainType =
- 以上是D3D12 調用CreateSwapChain失敗後的報錯信息,大概意思是,不支持多重採樣功能,
- 這裏感覺很奇怪,我使用的是最新的顯卡驅動,最新的Direct SDK,還會不支持多重採樣,具體原因待查
- 以下是我的報錯的代碼:
mSwapChainDesc.BufferDesc.Width = 1366;
mSwapChainDesc.BufferDesc.Height = 768;
mSwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
mSwapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
mSwapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
mSwapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER::DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST;
mSwapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING::DXGI_MODE_SCALING_CENTERED;
mSwapChainDesc.Windowed = true;
mSwapChainDesc.OutputWindow = mhMainWind;
mSwapChainDesc.BufferCount = 2;
mSwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
mSwapChainDesc.SwapEffect = DXGI_SWAP_EFFECT::DXGI_SWAP_EFFECT_FLIP_DISCARD;
mSwapChainDesc.SampleDesc.Count = 1;
mSwapChainDesc.SampleDesc.Quality = 1; //這裏採樣質量爲1,開啓了採樣
mD3DFactory->CreateSwapChain(
mCommandQueue.Get(),
&mSwapChainDesc,
mSwapChain.GetAddressOf()
)
需要注意的是,CreateSwapChain的第一個參數:
For Direct3D 11, and earlier versions of Direct3D, this is a pointer to the Direct3D device for the swap chain. For Direct3D 12 this is a pointer to a direct command queue (refer to ID3D12CommandQueue) . This parameter cannot be NULL.
- 既然報錯提示是多重採樣不支持,那麼把多重採樣關閉就好了
mSwapChainDesc.SampleDesc.Quality = 0;
重新運行,一切正常