Partager via


Fonction DCompositionCreateDevice (dcomp.h)

Crée un objet d’appareil qui peut être utilisé pour créer d’autres objets Microsoft DirectComposition.

Syntaxe

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

Paramètres

[in] dxgiDevice

Type : IDXGIDevice*

Appareil DXGI à utiliser pour créer des objets de surface DirectComposition.

[in] iid

Type : REFIID

Identificateur de l’interface à récupérer.

[out] dcompositionDevice

Type : void**

Reçoit un pointeur d’interface vers l’objet d’appareil nouvellement créé. Le pointeur est du type spécifié par le paramètre iid . Ce paramètre ne doit pas avoir la valeur NULL.

Valeur retournée

Type : HRESULT

Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT. Pour obtenir la liste des codes d’erreur, consultez Codes d’erreur DirectComposition .

Notes

Un objet d’appareil sert de fabrique pour tous les autres objets DirectComposition. Il contrôle également la composition transactionnelle via la méthode IDCompositionDevice::Commit .

L’appareil DXGI spécifié par dxgiDevice est utilisé pour créer tous les objets de surface DirectComposition. En particulier, la méthode IDCompositionSurface::BeginDraw retourne un pointeur d’interface vers une surface DXGI qui appartient à l’appareil spécifié par le paramètre dxgiDevice .

Lors de la création de l’appareil DXGI, les développeurs doivent spécifier l’indicateur D3D11_CREATE_DEVICE BGRA_SUPPORT ou D3D10_CREATE_DEVICE_BGRA_SUPPORT pour l’interopérabilité Direct2D avec les ressources Microsoft Direct3D.

Le paramètre iid doit être __uuidof(IDCompositionDevice), et le paramètre dcompositionDevice reçoit un pointeur vers une interface IDCompositionDevice .

Exemples

L’exemple suivant montre comment créer un objet d’appareil dans le cadre de l’initialisation d’objets 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;
}

Spécifications

   
Client minimal pris en charge Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
Plateforme cible Windows
En-tête dcomp.h
Bibliothèque Dcomp.lib
DLL Dcomp.dll

Voir aussi

Fonctions