Guide pratique pour créer un appareil de référence
Cette rubrique montre comment créer un appareil de référence qui implémente une implémentation logicielle très précise du runtime. Pour créer un appareil de référence, spécifiez simplement que l’appareil que vous créez utilisera un pilote de référence. Cet exemple crée un appareil et une chaîne d’échange en même temps.
Pour créer un appareil de référence
Définissez les paramètres initiaux d’une chaîne d’échange.
DXGI_SWAP_CHAIN_DESC sd; ZeroMemory( &sd, sizeof( sd ) ); sd.BufferCount = 1; sd.BufferDesc.Width = 640; sd.BufferDesc.Height = 480; sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; sd.BufferDesc.RefreshRate.Numerator = 60; sd.BufferDesc.RefreshRate.Denominator = 1; sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sd.OutputWindow = g_hWnd; sd.SampleDesc.Count = 1; sd.SampleDesc.Quality = 0; sd.Windowed = TRUE;
Demandez un niveau de fonctionnalité qui implémente les fonctionnalités dont votre application aura besoin. Un appareil de référence peut être créé avec succès pour le runtime Direct3D 11.
D3D_FEATURE_LEVEL FeatureLevels = D3D_FEATURE_LEVEL_11_0;
Pour plus d’informations sur les niveaux de fonctionnalités, consultez l’énumération D3D_FEATURE_LEVEL .
Créez l’appareil en appelant D3D11CreateDeviceAndSwapChain.
HRESULT hr = S_OK;
D3D_FEATURE_LEVEL FeatureLevel;
if( FAILED (hr = D3D11CreateDeviceAndSwapChain( NULL,
D3D_DRIVER_TYPE_REFERENCE,
NULL,
0,
&FeatureLevels,
1,
D3D11_SDK_VERSION,
&sd,
&g_pSwapChain,
&g_pd3dDevice,
&FeatureLevel,
&g_pImmediateContext )))
{
return hr;
}
Vous devez fournir à l’appel d’API le type de pilote de référence à partir de l’énumération D3D_DRIVER_TYPE . Une fois la méthode réussie, elle retourne une interface de chaîne d’échange, une interface d’appareil, un pointeur vers le niveau de fonctionnalité accordé par le pilote et une interface de contexte immédiate.
Pour plus d’informations sur les limitations de création d’un appareil de référence sur certains niveaux de fonctionnalités, consultez Limitations de création d’appareils WARP et de référence. Comment utiliser Direct3D 11