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.
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,
};
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 à :
|
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 |