Freigeben über


DCompositionCreateDevice-Funktion (dcomp.h)

Erstellt ein neues Geräteobjekt, das zum Erstellen anderer Microsoft DirectComposition-Objekte verwendet werden kann.

Syntax

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

Parameter

[in] dxgiDevice

Typ: IDXGIDevice*

Das DXGI-Gerät, das zum Erstellen von DirectComposition-Oberflächenobjekten verwendet werden soll.

[in] iid

Typ: REFIID

Der Bezeichner der abzurufenden Schnittstelle.

[out] dcompositionDevice

Typ: void**

Empfängt einen Schnittstellenzeiger auf das neu erstellte Geräteobjekt. Der Zeiger hat den vom iid-Parameter angegebenen Typ. Dieser Parameter darf nicht NULL sein.

Rückgabewert

Typ: HRESULT

Wenn die Funktion erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben. Eine Liste der Fehlercodes finden Sie unter DirectComposition-Fehlercodes .

Hinweise

Ein Geräteobjekt dient als Factory für alle anderen DirectComposition-Objekte. Außerdem wird die Transaktionskomposition über die IDCompositionDevice::Commit-Methode gesteuert.

Das von dxgiDevice angegebene DXGI-Gerät wird verwendet, um alle DirectComposition-Oberflächenobjekte zu erstellen. Insbesondere gibt die IDCompositionSurface::BeginDraw-Methode einen Schnittstellenzeiger auf eine DXGI-Oberfläche zurück, die zu dem durch den dxgiDevice-Parameter angegebenen Gerät gehört.

Beim Erstellen des DXGI-Geräts müssen Entwickler das D3D11_CREATE_DEVICE BGRA_SUPPORT - oder D3D10_CREATE_DEVICE_BGRA_SUPPORT-Flag für die Direct2D-Interoperabilität mit Microsoft Direct3D-Ressourcen angeben.

Der iid-Parameter muss lauten __uuidof(IDCompositionDevice), und der dcompositionDevice-Parameter empfängt einen Zeiger auf eine IDCompositionDevice-Schnittstelle .

Beispiele

Das folgende Beispiel zeigt, wie Sie ein Geräteobjekt im Rahmen der Initialisierung von DirectComposition-Objekten erstellen.

#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;
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 8 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile dcomp.h
Bibliothek Dcomp.lib
DLL Dcomp.dll

Siehe auch

Funktionen