다음을 통해 공유


DCompositionCreateDevice 함수(dcomp.h)

다른 Microsoft DirectComposition 개체를 만드는 데 사용할 수 있는 새 디바이스 개체를 만듭니다.

구문

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

매개 변수

[in] dxgiDevice

형식: IDXGIDevice*

DirectComposition 표면 개체를 만드는 데 사용할 DXGI 디바이스입니다.

[in] iid

형식: REFIID

검색할 인터페이스의 식별자입니다.

[out] dcompositionDevice

형식: void**

새로 만든 디바이스 개체에 대한 인터페이스 포인터를 받습니다. 포인터는 iid 매개 변수로 지정된 형식입니다. 이 매개 변수는 NULL이 아니어야 합니다.

반환 값

형식: HRESULT

함수가 성공하면 S_OK를 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다. 오류 코드 목록은 DirectComposition 오류 코드를 참조하세요.

설명

디바이스 개체는 다른 모든 DirectComposition 개체의 팩터리 역할을 합니다. 또한 IDCompositionDevice::Commit 메서드를 통해 트랜잭션 컴퍼지션을 제어합니다.

dxgiDevice로 지정된 DXGI 디바이스는 모든 DirectComposition 표면 개체를 만드는 데 사용됩니다. 특히 IDCompositionSurface::BeginDraw 메서드는 dxgiDevice 매개 변수로 지정된 디바이스에 속하는 DXGI 표면에 대한 인터페이스 포인터를 반환합니다.

DXGI 디바이스를 만들 때 개발자는 Microsoft Direct3D 리소스와의 Direct2D 상호 운용성에 대한 D3D11_CREATE_DEVICE BGRA_SUPPORT 또는 D3D10_CREATE_DEVICE_BGRA_SUPPORT 플래그를 지정해야 합니다.

iid 매개 변수는 이어야 __uuidof(IDCompositionDevice)하며 dcompositionDevice 매개 변수는 IDCompositionDevice 인터페이스에 대한 포인터를 받습니다.

예제

다음 예제에서는 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;
}

요구 사항

   
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 dcomp.h
라이브러리 Dcomp.lib
DLL Dcomp.dll

참조

함수