如何创建 SwapChainForHwnd
How to CreateSwapChainForHwnd
在以下代码中,device 是 ComPtr<ID3D12Device>
的一个实例,它已使用 D3D12CreateDevice
成功初始化,我得到一个失败的 HRESULT
。我得到值 0x887a0001。对于我做错了什么的任何想法,我将不胜感激。
DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {};
swapChainDesc.Width = 0;
swapChainDesc.Height = 0;
swapChainDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
swapChainDesc.Stereo = FALSE;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
swapChainDesc.BufferCount = 2;
swapChainDesc.Scaling = DXGI_SCALING_NONE;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_STRAIGHT;
swapChainDesc.Flags = 0;
ComPtr<IDXGISwapChain1> swapChain;
ThrowIfFailed(factory->CreateSwapChainForHwnd(device.Get(), wnd.handle(),
&swapChainDesc, nullptr,
nullptr, &swapChain));
CreateSwapChain 函数的第一个参数现在应该是 ID3D12CommandQueue* 而不是图形设备。
此外,将您的 AlphaMode 设置为 DXGI_ALPHA_MODE_UNSPECIFIED。
在以下代码中,device 是 ComPtr<ID3D12Device>
的一个实例,它已使用 D3D12CreateDevice
成功初始化,我得到一个失败的 HRESULT
。我得到值 0x887a0001。对于我做错了什么的任何想法,我将不胜感激。
DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {};
swapChainDesc.Width = 0;
swapChainDesc.Height = 0;
swapChainDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
swapChainDesc.Stereo = FALSE;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.SampleDesc.Quality = 0;
swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
swapChainDesc.BufferCount = 2;
swapChainDesc.Scaling = DXGI_SCALING_NONE;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_STRAIGHT;
swapChainDesc.Flags = 0;
ComPtr<IDXGISwapChain1> swapChain;
ThrowIfFailed(factory->CreateSwapChainForHwnd(device.Get(), wnd.handle(),
&swapChainDesc, nullptr,
nullptr, &swapChain));
CreateSwapChain 函数的第一个参数现在应该是 ID3D12CommandQueue* 而不是图形设备。
此外,将您的 AlphaMode 设置为 DXGI_ALPHA_MODE_UNSPECIFIED。