Compartilhar via


Função DCompositionCreateDevice (dcomp.h)

Cria um novo objeto de dispositivo que pode ser usado para criar outros objetos Do Microsoft DirectComposition.

Sintaxe

HRESULT DCompositionCreateDevice(
  [in]  IDXGIDevice *dxgiDevice,
  [in]  REFIID      iid,
  [out] void        **dcompositionDevice
);

Parâmetros

[in] dxgiDevice

Tipo: IDXGIDevice*

O dispositivo DXGI a ser usado para criar objetos de superfície DirectComposition.

[in] iid

Tipo: REFIID

O identificador da interface a ser recuperada.

[out] dcompositionDevice

Tipo: void**

Recebe um ponteiro de interface para o objeto de dispositivo recém-criado. O ponteiro é do tipo especificado pelo parâmetro iid . Esse parâmetro não deve ser NULL.

Valor retornado

Tipo: HRESULT

Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT. Confira Códigos de erro do DirectComposition para obter uma lista de códigos de erro.

Comentários

Um objeto de dispositivo serve como a fábrica para todos os outros objetos DirectComposition. Ele também controla a composição transacional por meio do método IDCompositionDevice::Commit .

O dispositivo DXGI especificado por dxgiDevice é usado para criar todos os objetos de superfície DirectComposition. Em particular, o método IDCompositionSurface::BeginDraw retorna um ponteiro de interface para uma superfície DXGI que pertence ao dispositivo especificado pelo parâmetro dxgiDevice .

Ao criar o dispositivo DXGI, os desenvolvedores devem especificar o sinalizador D3D11_CREATE_DEVICE BGRA_SUPPORT ou D3D10_CREATE_DEVICE_BGRA_SUPPORT para interoperabilidade direct2D com recursos do Microsoft Direct3D.

O parâmetro iid deve ser __uuidof(IDCompositionDevice)e o parâmetro dcompositionDevice recebe um ponteiro para uma interface IDCompositionDevice .

Exemplos

O exemplo a seguir mostra como criar um objeto de dispositivo como parte da inicialização de objetos DirectComposition.

#include <dcomp.h>
#include <d3d11.h>

HRESULT InitializeDirectCompositionDevice(HWND hwndTarget, 
        ID3D11Device **ppD3D11Device, IDCompositionDevice **ppDevice,
        IDCompositionTarget **ppCompTarget)
{
    HRESULT hr = S_OK;
    D3D_FEATURE_LEVEL featureLevelSupported;
    IDXGIDevice *pDXGIDevice = nullptr;

    // Verify that the arguments are valid.
    if (hwndTarget == NULL || ppD3D11Device == nullptr || ppDevice == nullptr || 
                            ppCompTarget == nullptr)
    {
        return E_INVALIDARG;
    }

    // Create the D3D device object. Note that the 
    // D3D11_CREATE_DEVICE_BGRA_SUPPORT flag is needed for rendering 
    // on surfaces using Direct2D. 
    hr = D3D11CreateDevice(
        nullptr,
        D3D_DRIVER_TYPE_HARDWARE,
        NULL,
        D3D11_CREATE_DEVICE_BGRA_SUPPORT, // needed for rendering on surfaces using Direct2D
        NULL,
        0,
        D3D11_SDK_VERSION,
        ppD3D11Device,
        &featureLevelSupported,
        NULL);

    if (SUCCEEDED(hr))
    {
        // Create the DXGI device used to create bitmap surfaces.
        hr = (*ppD3D11Device)->QueryInterface(&pDXGIDevice);
    }

    if (SUCCEEDED(hr))
    {
        // Create the DirectComposition device object.
        hr = DCompositionCreateDevice(pDXGIDevice, __uuidof(IDCompositionDevice), 
                reinterpret_cast<void **>(ppDevice));
    }

    if (SUCCEEDED(hr))
    {
        // Bind the DirectComposition device to the target window.
        hr = (*ppDevice)->CreateTargetForHwnd(hwndTarget, TRUE, ppCompTarget);   
    }

    return hr;
}

Requisitos

   
Cliente mínimo com suporte Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho dcomp.h
Biblioteca Dcomp.lib
DLL Dcomp.dll

Confira também

Funções