J'ai récemment été dérangé par un démarrage lent de mon application d3d11, donc j'ai commencé à enquêter et j'ai trouvé que le coupable est D3D11CreateDeviceAndSwapChain. Cet appel unique prend environ 1,5 secondes. Cela semble fou lent pour moi. Est-ce aussi votre expérience?D3D11CreateDeviceAndSwapChain lent
Ceci est le code d'installation:
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'' est un peu old-school. La meilleure pratique moderne est de créer l'appareil et swapchain indépendamment. Cela pourrait également vous permettre de réduire la partie du processus prend le temps. Jetez un oeil à [Anatomie de Direct3D 11 Créer un périphérique] (https://blogs.msdn.microsoft.com/chuckw/2014/02/05/ anatomie-de-direct3d-11-create-device /). –
Merci pour suggestion, je l'ai essayé et il semble que l'appel à D3D11CreateDevice prend la majorité du temps. – user1760770
Si vous ne le faites pas avec '' D3D11_CREATE_DEVICE_DEBUG'', est-ce que c'est plus rapide? –