次の方法で共有


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
Library Dcomp.lib
[DLL] Dcomp.dll

関連項目

関数