Direct3D 12 CreateSwapChain失敗

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;
    重新運行,一切正常
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章