Compartilhar via


Função D3D11CreateDeviceAndSwapChain (d3d11.h)

Cria um dispositivo que representa o adaptador de exibição e uma cadeia de troca usada para renderização.

Sintaxe

HRESULT D3D11CreateDeviceAndSwapChain(
  [in, optional]  IDXGIAdapter               *pAdapter,
                  D3D_DRIVER_TYPE            DriverType,
                  HMODULE                    Software,
                  UINT                       Flags,
  [in, optional]  const D3D_FEATURE_LEVEL    *pFeatureLevels,
                  UINT                       FeatureLevels,
                  UINT                       SDKVersion,
  [in, optional]  const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
  [out, optional] IDXGISwapChain             **ppSwapChain,
  [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 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. O valor deve ser não NULL quando D3D_DRIVER_TYPE for D3D_DRIVER_TYPE_SOFTWARE e NULL caso contrário.

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 recurso a serem criados. Se pFeatureLevels estiver 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 de 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.

[in, optional] pSwapChainDesc

Tipo: const DXGI_SWAP_CHAIN_DESC*

Um ponteiro para uma descrição de cadeia de troca (consulte DXGI_SWAP_CHAIN_DESC) que contém parâmetros de inicialização para a cadeia de troca.

[out, optional] ppSwapChain

Tipo: IDXGISwapChain**

Retorna o endereço de um ponteiro para o objeto IDXGISwapChain que representa a cadeia de troca usada para renderização.

[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*

Retorna um ponteiro para um D3D_FEATURE_LEVEL, que representa o primeiro elemento em uma matriz de níveis de recursos com suporte do dispositivo. 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á DXGI_ERROR_NOT_CURRENTLY_AVAILABLE se você chamá-lo em um processo de Sessão 0.

Esse método retornará E_INVALIDARG se você definir o parâmetro pAdapter como um valor não NULL e o parâmetro DriverType para 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 mais recente do Windows para obter a versão correta.

Comentários

Nota Se você chamar esse método em um processo de Sessão 0, ele retornará DXGI_ERROR_NOT_CURRENTLY_AVAILABLE.
 
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 chame o método QueryInterface no objeto ID3D11Device para obter a interface ID3D11Device2.

Além disso, consulte a seção comentários em D3D11CreateDevice para obter detalhes sobre dependências de parâmetro de entrada. Para criar um dispositivo sem criar uma cadeia de troca, use a função D3D11CreateDevice .

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, D3D11CreateDeviceAndSwapChain retornará um HRESULT de E_INVALIDARG.

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

Notas de uso

Nota A função D3D11CreateDeviceAndSwapChain não existe para aplicativos da Windows Store. Em vez disso, os aplicativos da Windows Store usam a função D3D11CreateDevice e usam o método IDXGIFactory2::CreateSwapChainForCoreWindow .
 
Nota Essa função não foi atualizada para dar suporte a recursos adicionais recentes de criação de cadeia de troca. Para obter os métodos de criação de cadeia de troca mais atualizados, consulte os métodos de IDXGIFactory2 (incluindo CreateSwapChainForHwnd, CreateSwapChainForCoreWindow e CreateSwapChainForComposition).
 
Windows Phone 8: 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