Funzione DCompositionCreateDevice (dcomp.h)

Crea un nuovo oggetto dispositivo che può essere utilizzato per creare altri oggetti Microsoft DirectComposition.

Sintassi

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

Parametri

[in] dxgiDevice

Tipo: IDXGIDevice*

Dispositivo DXGI da usare per creare oggetti superficie DirectComposition.

[in] iid

Tipo: REFIID

Identificatore dell'interfaccia da recuperare.

[out] dcompositionDevice

Tipo: void**

Riceve un puntatore di interfaccia all'oggetto dispositivo appena creato. Il puntatore è del tipo specificato dal parametro iid . Questo parametro non deve essere NULL.

Valore restituito

Tipo: HRESULT

Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT . Per un elenco di codici di errore, vedere Codici di errore directComposition .

Commenti

Un oggetto dispositivo funge da factory per tutti gli altri oggetti DirectComposition. Controlla anche la composizione transazionale tramite il metodo IDCompositionDevice::Commit .

Il dispositivo DXGI specificato da dxgiDevice viene usato per creare tutti gli oggetti superficie DirectComposition. In particolare, il metodo IDCompositionSurface::BeginDraw restituisce un puntatore di interfaccia a una superficie DXGI appartenente al dispositivo specificato dal parametro dxgiDevice .

Quando si crea il dispositivo DXGI, gli sviluppatori devono specificare il flag D3D11_CREATE_DEVICE BGRA_SUPPORT o D3D10_CREATE_DEVICE_BGRA_SUPPORT per l'interoperabilità Direct2D con le risorse di Microsoft Direct3D.

Il parametro iid deve essere __uuidof(IDCompositionDevice)e il parametro dcompositionDevice riceve un puntatore a un'interfaccia IDCompositionDevice .

Esempio

Nell'esempio seguente viene illustrato come creare un oggetto dispositivo come parte dell'inizializzazione di oggetti 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;
}

Requisiti

   
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione dcomp.h
Libreria Dcomp.lib
DLL Dcomp.dll

Vedi anche

Funzioni