Condividi tramite


Funzione D3D11CreateDevice (d3d11.h)

Crea un dispositivo che rappresenta l'adattatore di visualizzazione.

Sintassi

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
);

Parametri

[in, optional] pAdapter

Tipo: IDXGIAdapter*

Puntatore alla scheda video da usare durante la creazione di un dispositivo. Passare NULL per usare l'adapter predefinito, ovvero la prima scheda enumerata da IDXGIFactory1::EnumAdapters.

Nota Non combinare l'uso di DXGI 1.0 (IDXGIFactory) e DXGI 1.1 (IDXGIFactory1) in un'applicazione. Usare IDXGIFactory o IDXGIFactory1, ma non entrambi in un'applicazione.
 

DriverType

Tipo: D3D_DRIVER_TYPE

D3D_DRIVER_TYPE, che rappresenta il tipo di driver da creare.

Software

Tipo: HMODULE

Handle a una DLL che implementa un rasterizer software. Se DriverType è D3D_DRIVER_TYPE_SOFTWARE, il software non deve essere NULL. Ottenere l'handle chiamando LoadLibrary, LoadLibraryEx o GetModuleHandle.

Flags

Tipo: UINT

Livelli di runtime da abilitare (vedere D3D11_CREATE_DEVICE_FLAG); i valori possono essere or bit per bit insieme.

[in, optional] pFeatureLevels

Tipo: const D3D_FEATURE_LEVEL*

Puntatore a una matrice di D3D_FEATURE_LEVEL, che determina l'ordine dei livelli di funzionalità da creare. Se pFeatureLevels è impostato su NULL, questa funzione usa la matrice di livelli di funzionalità seguente:

{
    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,
};
Nota Se il runtime Direct3D 11.1 è presente nel computer e pFeatureLevels è impostato su NULL, questa funzione non creerà un dispositivo D3D_FEATURE_LEVEL_11_1 . Per creare un dispositivo D3D_FEATURE_LEVEL_11_1, è necessario specificare in modo esplicito una matrice di D3D_FEATURE_LEVEL che include D3D_FEATURE_LEVEL_11_1. Se si specifica una matrice di D3D_FEATURE_LEVEL che contiene D3D_FEATURE_LEVEL_11_1 in un computer che non dispone del runtime Direct3D 11.1 installato, questa funzione ha esito negativo immediatamente con E_INVALIDARG.
 

FeatureLevels

Tipo: UINT

Numero di elementi in pFeatureLevels.

SDKVersion

Tipo: UINT

Versione dell'SDK; usare D3D11_SDK_VERSION.

[out, optional] ppDevice

Tipo: ID3D11Device**

Restituisce l'indirizzo di un puntatore a un oggetto ID3D11Device che rappresenta il dispositivo creato. Se questo parametro è NULL, non verrà restituito alcun ID3D11Device.

[out, optional] pFeatureLevel

Tipo: D3D_FEATURE_LEVEL*

In caso di esito positivo, restituisce la prima D3D_FEATURE_LEVEL dalla matrice pFeatureLevels riuscita. Specificare NULL come input se non è necessario determinare quale livello di funzionalità è supportato.

[out, optional] ppImmediateContext

Tipo: ID3D11DeviceContext**

Restituisce l'indirizzo di un puntatore a un oggetto ID3D11DeviceContext che rappresenta il contesto del dispositivo. Se questo parametro è NULL, non verrà restituito alcun ID3D11DeviceContext.

Valore restituito

Tipo: HRESULT

Questo metodo può restituire uno dei codici restituiti Direct3D 11.

Questo metodo restituisce E_INVALIDARG se si imposta il parametro pAdapter su un valore non NULL e il parametro DriverType sul valore D3D_DRIVER_TYPE_HARDWARE.

Questo metodo restituisce DXGI_ERROR_SDK_COMPONENT_MISSING se si specifica D3D11_CREATE_DEVICE_DEBUG in Flag e la versione errata del livello di debug viene installata nel computer. Installare windows SDK più recente per ottenere la versione corretta.

Commenti

Questo punto di ingresso è supportato dal runtime Direct3D 11, disponibile in Windows 7, Windows Server 2008 R2 e come aggiornamento a Windows Vista (KB971644).

Per creare un dispositivo Direct3D 11.1 (ID3D11Device1), disponibile in Windows 8, Windows Server 2012 e Windows Server 2008 R2 con l'aggiornamento della piattaforma per Windows 7 installato, creare prima un ID3D11Device con questa funzione e quindi chiamare il metodo QueryInterface sull'oggetto ID3D11Device per ottenere l'interfaccia ID3D11Device .

Per creare un dispositivo Direct3D 11.2 (ID3D11Device2), disponibile in Windows 8.1 e Windows Server 2012 R2, creare prima un ID3D11Device con questa funzione e quindi chiamare il metodo QueryInterface nell'oggetto ID3D11Device per ottenere l'interfaccia ID3D11Device2.

Impostare ppDevice e ppImmediateContext su NULL per determinare quale livello di funzionalità è supportato esaminando pFeatureLevel senza creare un dispositivo.

Per un esempio, vedere Procedura: Creare un dispositivo e un contesto immediato; per creare un dispositivo e una catena di scambio contemporaneamente, usare D3D11CreateDeviceAndSwapChain.

Se si imposta il parametro pAdapter su un valore non NULL , è necessario impostare anche il parametro DriverType sul valore D3D_DRIVER_TYPE_UNKNOWN. Se si imposta il parametro pAdapter su un valore non NULL e il parametro DriverType sul valore D3D_DRIVER_TYPE_HARDWARE, D3D11CreateDevice restituisce un valore HRESULT di E_INVALIDARG.

Differenze tra Direct3D 10 e Direct3D 11:

In Direct3D 10 la presenza di pAdapter ha determinato quale adattatore usare e DriverType potrebbe non corrispondervi a quello che era l'adapter.

In Direct3D 11, se si sta tentando di creare un hardware o un dispositivo software, impostare pAdapter != NULL che limita gli altri input per essere:

  • DriverType deve essere D3D_DRIVER_TYPE_UNKNOWN
  • Il software deve essere NULL.
D'altra parte, se pAdapter == NULL, DriverType non può essere impostato su D3D_DRIVER_TYPE_UNKNOWN; può essere impostato su entrambi:
  • Se DriverType == D3D_DRIVER_TYPE_SOFTWARE, software non può essere NULL.
  • Se DriverType == D3D_DRIVER_TYPE_HARDWARE, l'adapter usato sarà l'adattatore predefinito, ovvero la prima scheda enumerata da IDXGIFactory1::EnumAdapters
 

La firma della funzione PFN_D3D11_CREATE_DEVICE viene fornita come typedef, in modo che sia possibile usare tecniche di collegamento dinamico (GetProcAddress) anziché collegare staticamente.

Windows Phone 8: questa API è supportata.

Windows Phone 8.1: questa API è supportata.

Requisiti

   
Piattaforma di destinazione Windows
Intestazione d3d11.h
Libreria D3D11.lib
DLL D3D11.dll

Vedi anche

Funzioni di sistema