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