Compartilhar via


Função D3D11CreateDevice (d3d11.h)

Cria um dispositivo que representa o adaptador de exibição.

Sintaxe

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*

Um ponteiro para o adaptador de vídeo a ser usado ao criar um dispositivo. Passe NULL para usar o adaptador padrão, que é o primeiro adaptador que é enumerado por IDXGIFactory1::EnumAdapters.

Nota Não misture o uso de DXGI 1.0 (IDXGIFactory) e DXGI 1.1 (IDXGIFactory1) em um aplicativo. Use IDXGIFactory ou IDXGIFactory1, mas não ambos em um aplicativo.
 

DriverType

Tipo: D3D_DRIVER_TYPE

O D3D_DRIVER_TYPE, que representa o tipo de driver a ser criado.

Software

Tipo: HMODULE

Um identificador para uma DLL que implementa um rasterizador de software. Se DriverType for D3D_DRIVER_TYPE_SOFTWARE, o software não deverá ser NULL. Obtenha o identificador chamando LoadLibrary, LoadLibraryEx ou GetModuleHandle.

Flags

Tipo: UINT

As camadas de runtime a serem habilitados (consulte D3D11_CREATE_DEVICE_FLAG); os valores podem ser OR'd bit a bit juntos.

[in, optional] pFeatureLevels

Tipo: const D3D_FEATURE_LEVEL*

Um ponteiro para uma matriz de D3D_FEATURE_LEVELs, que determinam a ordem dos níveis de recursos a serem criados. Se pFeatureLevels for definido como NULL, essa função usará a seguinte matriz de níveis de recursos:

{
    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 o runtime do Direct3D 11.1 estiver presente no computador e pFeatureLevels estiver definido como NULL, essa função não criará um dispositivo D3D_FEATURE_LEVEL_11_1 . Para criar um dispositivo D3D_FEATURE_LEVEL_11_1 , você deve fornecer explicitamente uma matriz de D3D_FEATURE_LEVEL que inclua D3D_FEATURE_LEVEL_11_1. Se você fornecer uma matriz D3D_FEATURE_LEVEL que contenha D3D_FEATURE_LEVEL_11_1 em um computador que não tenha o runtime do Direct3D 11.1 instalado, essa função falhará imediatamente com E_INVALIDARG.
 

FeatureLevels

Tipo: UINT

O número de elementos em pFeatureLevels.

SDKVersion

Tipo: UINT

A versão do SDK; use D3D11_SDK_VERSION.

[out, optional] ppDevice

Tipo: ID3D11Device**

Retorna o endereço de um ponteiro para um objeto ID3D11Device que representa o dispositivo criado. Se esse parâmetro for NULL, nenhum ID3D11Device será retornado.

[out, optional] pFeatureLevel

Tipo: D3D_FEATURE_LEVEL*

Se tiver êxito, retornará o primeiro D3D_FEATURE_LEVEL da matriz pFeatureLevels que foi bem-sucedida. Forneça NULL como uma entrada se você não precisar determinar qual nível de recurso tem suporte.

[out, optional] ppImmediateContext

Tipo: ID3D11DeviceContext**

Retorna o endereço de um ponteiro para um objeto ID3D11DeviceContext que representa o contexto do dispositivo. Se esse parâmetro for NULL, nenhum ID3D11DeviceContext será retornado.

Valor retornado

Tipo: HRESULT

Esse método pode retornar um dos códigos de retorno do Direct3D 11.

Esse método retornará E_INVALIDARG se você definir o parâmetro pAdapter como um valor não NULL e o parâmetro DriverType como o valor D3D_DRIVER_TYPE_HARDWARE.

Esse método retornará DXGI_ERROR_SDK_COMPONENT_MISSING se você especificar D3D11_CREATE_DEVICE_DEBUG em Sinalizadores e a versão incorreta da camada de depuração estiver instalada no computador. Instale o SDK do Windows mais recente para obter a versão correta.

Comentários

Esse ponto de entrada é compatível com o runtime do Direct3D 11, que está disponível no Windows 7, Windows Server 2008 R2 e como uma atualização para o Windows Vista (KB971644).

Para criar um dispositivo Direct3D 11.1 (ID3D11Device1), que está disponível no Windows 8, Windows Server 2012 e Windows 7 e Windows Server 2008 R2 com a Atualização de Plataforma para Windows 7 instalada, primeiro você cria um ID3D11Device com essa função e, em seguida, chama o método QueryInterface no objeto ID3D11Device para obter a interface ID3D11Device1 .

Para criar um dispositivo Direct3D 11.2 (ID3D11Device2), que está disponível no Windows 8.1 e no Windows Server 2012 R2, primeiro crie um ID3D11Device com essa função e, em seguida, chame o método QueryInterface no objeto ID3D11Device para obter a interface ID3D11Device2.

Defina ppDevice e ppImmediateContext como NULL para determinar qual nível de recurso tem suporte examinando pFeatureLevel sem criar um dispositivo.

Para obter um exemplo, consulte How To: Create a Device and Immediate Context; para criar um dispositivo e uma cadeia de troca ao mesmo tempo, use D3D11CreateDeviceAndSwapChain.

Se você definir o parâmetro pAdapter como um valor não NULL , também deverá definir o parâmetro DriverType como o valor D3D_DRIVER_TYPE_UNKNOWN. Se você definir o parâmetro pAdapter como um valor não NULL e o parâmetro DriverType como o valor D3D_DRIVER_TYPE_HARDWARE, D3D11CreateDevice retornará um HRESULT de E_INVALIDARG.

Diferenças entre o Direct3D 10 e o Direct3D 11:

No Direct3D 10, a presença do pAdapter ditou qual adaptador usar e o DriverType poderia incompatível com o que era o adaptador.

No Direct3D 11, se você estiver tentando criar um hardware ou um dispositivo de software, defina pAdapter != NULL que restringe as outras entradas a serem:

  • DriverType deve ser D3D_DRIVER_TYPE_UNKNOWN
  • O software deve ser NULL.
Por outro lado, se pAdapter == NULL, o DriverType não pode ser definido como D3D_DRIVER_TYPE_UNKNOWN; ele pode ser definido como:
  • Se DriverType == D3D_DRIVER_TYPE_SOFTWARE, o software não poderá ser NULL.
  • Se DriverType == D3D_DRIVER_TYPE_HARDWARE, o adaptador usado será o adaptador padrão, que é o primeiro adaptador que é enumerado por IDXGIFactory1::EnumAdapters
 

A assinatura de função PFN_D3D11_CREATE_DEVICE é fornecida como um typedef, para que você possa usar técnicas de vinculação dinâmica (GetProcAddress) em vez de vincular estaticamente.

Windows Phone 8: há suporte para essa API.

Windows Phone 8.1: há suporte para essa API.

Requisitos

   
Plataforma de Destino Windows
Cabeçalho d3d11.h
Biblioteca D3D11.lib
DLL D3D11.dll

Confira também

Core Functions