Partager via


D3D11CreateDevice, fonction (d3d11.h)

Crée un appareil qui représente l’adaptateur d’affichage.

Syntaxe

HRESULT D3D11CreateDevice(
  [in, optional]  IDXGIAdapter            *pAdapter,
                  D3D_DRIVER_TYPE         DriverType,
                  HMODULE                 Software,
                  UINT                    Flags,
  [in, optional]  const D3D_FEATURE_LEVEL *pFeatureLevels,
                  UINT                    FeatureLevels,
                  UINT                    SDKVersion,
  [out, optional] ID3D11Device            **ppDevice,
  [out, optional] D3D_FEATURE_LEVEL       *pFeatureLevel,
  [out, optional] ID3D11DeviceContext     **ppImmediateContext
);

Paramètres

[in, optional] pAdapter

Type : IDXGIAdapter*

Pointeur vers la carte vidéo à utiliser lors de la création d’un appareil. Passez null pour utiliser l’adaptateur par défaut, qui est le premier adaptateur énuméré par IDXGIFactory1::EnumAdapters.

Note Ne mélangez pas l’utilisation de DXGI 1.0 (IDXGIFactory) et de DXGI 1.1 (IDXGIFactory1) dans une application. Utilisez IDXGIFactory ou IDXGIFactory1, mais pas les deux dans une application.
 

DriverType

Type : D3D_DRIVER_TYPE

Le D3D_DRIVER_TYPE, qui représente le type de pilote à créer.

Software

Type : HMODULE

Handle vers une DLL qui implémente un rastériseur logiciel. Si DriverType est D3D_DRIVER_TYPE_SOFTWARE, Software ne doit pas avoir la valeur NULL. Obtenez le handle en appelant LoadLibrary, LoadLibraryEx ou GetModuleHandle.

Flags

Type : UINT

Couches d’exécution à activer (voir D3D11_CREATE_DEVICE_FLAG) ; les valeurs peuvent être au niveau du bit OU ensemble.

[in, optional] pFeatureLevels

Type : const D3D_FEATURE_LEVEL*

Pointeur vers un tableau de D3D_FEATURE_LEVEL, qui détermine l’ordre des niveaux de fonctionnalité à créer. Si pFeatureLevels est défini sur NULL, cette fonction utilise le tableau suivant de niveaux de fonctionnalité :

{
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0,
    D3D_FEATURE_LEVEL_9_3,
    D3D_FEATURE_LEVEL_9_2,
    D3D_FEATURE_LEVEL_9_1,
};
Note Si le runtime Direct3D 11.1 est présent sur l’ordinateur et que pFeatureLevels a la valeur NULL, cette fonction ne crée pas d’appareil D3D_FEATURE_LEVEL_11_1 . Pour créer un appareil D3D_FEATURE_LEVEL_11_1 , vous devez fournir explicitement un tableau D3D_FEATURE_LEVEL qui inclut D3D_FEATURE_LEVEL_11_1. Si vous fournissez un tableau D3D_FEATURE_LEVEL qui contient des D3D_FEATURE_LEVEL_11_1 sur un ordinateur sur lequel le runtime Direct3D 11.1 n’est pas installé, cette fonction échoue immédiatement avec E_INVALIDARG.
 

FeatureLevels

Type : UINT

Nombre d’éléments dans pFeatureLevels.

SDKVersion

Type : UINT

La version du Kit de développement logiciel (SDK) ; utilisez D3D11_SDK_VERSION.

[out, optional] ppDevice

Type : ID3D11Device**

Retourne l’adresse d’un pointeur vers un objet ID3D11Device qui représente l’appareil créé. Si ce paramètre a la valeur NULL, aucun ID3D11Device n’est retourné.

[out, optional] pFeatureLevel

Type : D3D_FEATURE_LEVEL*

En cas de réussite, retourne la première D3D_FEATURE_LEVEL du tableau pFeatureLevels qui a réussi. Indiquez NULL comme entrée si vous n’avez pas besoin de déterminer le niveau de fonctionnalité pris en charge.

[out, optional] ppImmediateContext

Type : ID3D11DeviceContext**

Retourne l’adresse d’un pointeur vers un objet ID3D11DeviceContext qui représente le contexte de l’appareil. Si ce paramètre a la valeur NULL, aucun ID3D11DeviceContext n’est retourné.

Valeur retournée

Type : HRESULT

Cette méthode peut retourner l’un des codes de retour Direct3D 11.

Cette méthode retourne E_INVALIDARG si vous définissez le paramètre pAdapter sur une valeur non NULL et le paramètre DriverType sur la valeur D3D_DRIVER_TYPE_HARDWARE.

Cette méthode retourne DXGI_ERROR_SDK_COMPONENT_MISSING si vous spécifiez D3D11_CREATE_DEVICE_DEBUG dans Indicateurs et que la version incorrecte de la couche de débogage est installée sur votre ordinateur. Installez la dernière version du SDK Windows pour obtenir la version correcte.

Remarques

Ce point d’entrée est pris en charge par le runtime Direct3D 11, qui est disponible sur Windows 7, Windows Server 2008 R2 et en tant que mise à jour de Windows Vista (KB971644).

Pour créer un appareil Direct3D 11.1 (ID3D11Device1), disponible sur Windows 8, Windows Server 2012 et Windows 7 et Windows Server 2008 R2 avec la mise à jour de plateforme pour Windows 7 installée, vous créez d’abord un ID3D11Device avec cette fonction, puis appelez la méthode QueryInterface sur l’objet ID3D11Device pour obtenir l’interface ID3D11Device1 .

Pour créer un appareil Direct3D 11.2 (ID3D11Device2), disponible sur Windows 8.1 et Windows Server 2012 R2, vous devez d’abord créer un ID3D11Device avec cette fonction, puis appeler la méthode QueryInterface sur l’objet ID3D11Device pour obtenir l’interface ID3D11Device2.

Définissez ppDevice et ppImmediateContext sur NULL pour déterminer le niveau de fonctionnalité pris en charge en examinant pFeatureLevel sans créer d’appareil.

Pour obtenir un exemple, consultez How To: Create a Device and Immediate Context; pour créer un appareil et une chaîne d’échange en même temps, utilisez D3D11CreateDeviceAndSwapChain.

Si vous définissez le paramètre pAdapter sur une valeur non NULL , vous devez également définir le paramètre DriverType sur la valeur D3D_DRIVER_TYPE_UNKNOWN. Si vous définissez le paramètre pAdapter sur une valeur non NULL et le paramètre DriverType sur la valeur D3D_DRIVER_TYPE_HARDWARE, D3D11CreateDevice renvoie un HRESULT de E_INVALIDARG.

Différences entre Direct3D 10 et Direct3D 11 :

Dans Direct3D 10, la présence de pAdapter dictait la carte à utiliser et le DriverType pouvait ne pas être en correspondance avec l’adaptateur.

Dans Direct3D 11, si vous essayez de créer un matériel ou un périphérique logiciel, définissez pAdapter != NULL , ce qui limite les autres entrées à :

  • DriverType doit être D3D_DRIVER_TYPE_UNKNOWN
  • Le logiciel doit avoir la valeur NULL.
En revanche, si pAdapter == NULL, driverType ne peut pas être défini sur D3D_DRIVER_TYPE_UNKNOWN ; il peut être défini sur :
  • Si DriverType == D3D_DRIVER_TYPE_SOFTWARE, Software ne peut pas avoir la valeur NULL.
  • Si DriverType == D3D_DRIVER_TYPE_HARDWARE, l’adaptateur utilisé est l’adaptateur par défaut, qui est le premier adaptateur énuméré par IDXGIFactory1::EnumAdapters
 

Le PFN_D3D11_CREATE_DEVICE de signature de fonction est fourni en tant que typedef, ce qui vous permet d’utiliser des techniques de liaison dynamique (GetProcAddress) au lieu d’une liaison statique.

Windows Phone 8 : Cette API est prise en charge.

Windows Phone 8.1 : cette API est prise en charge.

Configuration requise

   
Plateforme cible Windows
En-tête d3d11.h
Bibliothèque D3D11.lib
DLL D3D11.dll

Voir aussi

Fonctions Core