Función D3D11CreateDevice (d3d11.h)

Crea un dispositivo que representa el adaptador de pantalla.

Sintaxis

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

Parámetros

[in, optional] pAdapter

Tipo: IDXGIAdapter*

Puntero al adaptador de vídeo que se va a usar al crear un dispositivo. Pase NULL para usar el adaptador predeterminado, que es el primer adaptador enumerado por IDXGIFactory1::EnumAdapters.

Nota No combine el uso de DXGI 1.0 (IDXGIFactory) y DXGI 1.1 (IDXGIFactory1) en una aplicación. Use IDXGIFactory o IDXGIFactory1, pero no ambos en una aplicación.
 

DriverType

Tipo: D3D_DRIVER_TYPE

El D3D_DRIVER_TYPE, que representa el tipo de controlador que se va a crear.

Software

Tipo: HMODULE

Identificador de un archivo DLL que implementa un rasterizador de software. Si DriverType es D3D_DRIVER_TYPE_SOFTWARE, Software no debe ser NULL. Obtenga el identificador llamando a LoadLibrary, LoadLibraryEx o GetModuleHandle.

Flags

Tipo: UINT

Las capas en tiempo de ejecución que se van a habilitar (consulte D3D11_CREATE_DEVICE_FLAG); los valores pueden ser OR bit a bit juntos.

[in, optional] pFeatureLevels

Tipo: const D3D_FEATURE_LEVEL*

Puntero a una matriz de D3D_FEATURE_LEVELs, que determinan el orden de los niveles de características que se van a intentar crear. Si pFeatureLevels se establece en NULL, esta función usa la siguiente matriz de niveles de características:

{
    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 Si el entorno de ejecución de Direct3D 11.1 está presente en el equipo y pFeatureLevels está establecido en NULL, esta función no creará un dispositivo D3D_FEATURE_LEVEL_11_1 . Para crear un dispositivo D3D_FEATURE_LEVEL_11_1 , debe proporcionar explícitamente una matriz de D3D_FEATURE_LEVEL que incluya D3D_FEATURE_LEVEL_11_1. Si proporciona una matriz de D3D_FEATURE_LEVEL que contiene D3D_FEATURE_LEVEL_11_1 en un equipo que no tiene instalado el entorno de ejecución de Direct3D 11.1, esta función produce un error inmediatamente con E_INVALIDARG.
 

FeatureLevels

Tipo: UINT

Número de elementos de pFeatureLevels.

SDKVersion

Tipo: UINT

La versión del SDK; use D3D11_SDK_VERSION.

[out, optional] ppDevice

Tipo: ID3D11Device**

Devuelve la dirección de un puntero a un objeto ID3D11Device que representa el dispositivo creado. Si este parámetro es NULL, no se devolverá id3D11Device.

[out, optional] pFeatureLevel

Tipo: D3D_FEATURE_LEVEL*

Si se ejecuta correctamente, devuelve el primer D3D_FEATURE_LEVEL de la matriz pFeatureLevels que se realizó correctamente. Proporcione NULL como entrada si no necesita determinar qué nivel de característica se admite.

[out, optional] ppImmediateContext

Tipo: ID3D11DeviceContext**

Devuelve la dirección de un puntero a un objeto ID3D11DeviceContext que representa el contexto del dispositivo. Si este parámetro es NULL, no se devolverá id3D11DeviceContext.

Valor devuelto

Tipo: HRESULT

Este método puede devolver uno de los códigos de retorno de Direct3D 11.

Este método devuelve E_INVALIDARG si establece el parámetro pAdapter en un valor distinto de NULL y el parámetro DriverType en el valor D3D_DRIVER_TYPE_HARDWARE.

Este método devuelve DXGI_ERROR_SDK_COMPONENT_MISSING si especifica D3D11_CREATE_DEVICE_DEBUG en Marcas y la versión incorrecta de la capa de depuración está instalada en el equipo. Instale la versión más reciente de Windows SDK para obtener la versión correcta.

Comentarios

Este punto de entrada es compatible con el entorno de ejecución de Direct3D 11, que está disponible en Windows 7, Windows Server 2008 R2 y como una actualización de Windows Vista (KB971644).

Para crear un dispositivo Direct3D 11.1 (ID3D11Device1), que está disponible en Windows 8, Windows Server 2012 y Windows 7 y Windows Server 2008 R2 con platform Update para Windows 7 instalados, primero crea un ID3D11Device con esta función y, a continuación, llama al método QueryInterface en el objeto ID3D11Device para obtener la interfaz ID3D11Device1.

Para crear un dispositivo Direct3D 11.2 (ID3D11Device2), que está disponible en Windows 8.1 y Windows Server 2012 R2, primero crea un ID3D11Device con esta función y, a continuación, llama al método QueryInterface en el objeto ID3D11Device para obtener la interfaz ID3D11Device2.

Establezca ppDevice y ppImmediateContext en NULL para determinar qué nivel de característica se admite examinando pFeatureLevel sin crear un dispositivo.

Para obtener un ejemplo, vea How To: Create a Device and Immediate Context; para crear un dispositivo y una cadena de intercambio al mismo tiempo, use D3D11CreateDeviceAndSwapChain.

Si establece el parámetro pAdapter en un valor distinto de NULL , también debe establecer el parámetro DriverType en el valor de D3D_DRIVER_TYPE_UNKNOWN. Si establece el parámetro pAdapter en un valor distinto de NULL y el parámetro DriverType en el valor de D3D_DRIVER_TYPE_HARDWARE, D3D11CreateDevice devuelve un VALOR HRESULT de E_INVALIDARG.

Diferencias entre Direct3D 10 y Direct3D 11:

En Direct3D 10, la presencia de pAdapter dictaba qué adaptador usar y driverType podía no coincider con lo que era el adaptador.

En Direct3D 11, si está intentando crear un hardware o un dispositivo de software, establezca pAdapter != NULL , lo que restringe las demás entradas para que:

  • DriverType debe ser D3D_DRIVER_TYPE_UNKNOWN
  • El software debe ser NULL.
Por otro lado, si pAdapter == NULL, driverType no se puede establecer en D3D_DRIVER_TYPE_UNKNOWN; se puede establecer en:
  • Si DriverType == D3D_DRIVER_TYPE_SOFTWARE, el software no puede ser NULL.
  • Si DriverType == D3D_DRIVER_TYPE_HARDWARE, el adaptador usado será el adaptador predeterminado, que es el primer adaptador enumerado por IDXGIFactory1::EnumAdapters.
 

La firma de función PFN_D3D11_CREATE_DEVICE se proporciona como definición de tipo, para que pueda usar técnicas de vinculación dinámica (GetProcAddress) en lugar de vincular estáticamente.

Windows Phone 8: se admite esta API.

Windows Phone 8.1: se admite esta API.

Requisitos

   
Plataforma de destino Windows
Encabezado d3d11.h
Library D3D11.lib
Archivo DLL D3D11.dll

Consulte también

Funciones principales