私は最近d3d11アプリケーションの起動が遅いので、調査を開始し、原因がD3D11CreateDeviceAndSwapChainであることがわかりました。この単一の呼び出しには、およそ1.5秒かかります。それは私にとっては狂っているようだ。これもあなたの経験ですか?D3D11CreateDeviceAndSwapChain slow
これは、セットアップコードです:あなたはD3D11CreateDeviceAndSwapChain
は廃止を検討する必要があり、デバイスを個別に作成する必要があります
DXGI_SWAP_CHAIN_DESC swap_chain_desc = {};
swap_chain_desc.BufferDesc.Width = window->window_width;
swap_chain_desc.BufferDesc.Height = window->window_height;
swap_chain_desc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
swap_chain_desc.SampleDesc.Count = 1;
swap_chain_desc.SampleDesc.Quality = 0;
swap_chain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
swap_chain_desc.BufferCount = 2;
swap_chain_desc.OutputWindow = window->window_handle;
swap_chain_desc.BufferDesc.RefreshRate.Numerator = 60;
swap_chain_desc.BufferDesc.RefreshRate.Denominator = 1;
swap_chain_desc.Windowed = true;
swap_chain_desc.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
swap_chain_desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL;
D3D_FEATURE_LEVEL feature_level = D3D_FEATURE_LEVEL_11_0;
D3D_FEATURE_LEVEL supported_feature_level;
UINT flags = 0;
#ifdef DEBUG
flags = D3D11_CREATE_DEVICE_DEBUG;
#endif
HRESULT hr = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, flags, &feature_level, 1, D3D11_SDK_VERSION,
&swap_chain_desc, &context.swapChain, &context.device, &supported_feature_level, &context.context);
'' D3D11CreateDeviceAndSwapChain''はちょっと古い学校です。現代のベストプラクティスは、デバイスを作成し、独立して交換することです。これにより、プロセスのどの部分が時間を費やしているかを絞り込むこともできます。[Direct3D 11デバイスの作成](https://blogs.msdn.microsoft.com/chuckw/2014/02/05/)を参照してください。 direct3d-11-create-device /の解剖学) –
提案してくれてありがとう、私はそれを試みたとD3D11CreateDeviceの呼び出しが大部分の時間かかるようです。 – user1760770
'' D3D11_CREATE_DEVICE_DEBUG''でそれをしないと、それはもっと速いのですか? –