ID2D1Factory::CreateDxgiSurfaceRenderTarget オーバーロードされたメソッド

DirectX Graphics Infrastructure (DXGI) サーフェイスに描画するレンダー ターゲットを作成します。

オーバーロードの一覧

メソッド 説明
CreateDxgiSurfaceRenderTarget(IDXGISurface*,D2D1_RENDER_TARGET_PROPERTIES&,ID2D1RenderTarget**)

DirectX Graphics Infrastructure (DXGI) サーフェイスに描画するレンダー ターゲットを作成します。

CreateDxgiSurfaceRenderTarget(IDXGISurface*,D2D1_RENDER_TARGET_PROPERTIES*,ID2D1RenderTarget**)

DirectX Graphics Infrastructure (DXGI) サーフェイスに描画するレンダー ターゲットを作成します。

解説

Direct3D サーフェイスに書き込むには、IDXGISurface を取得して CreateDxgiSurfaceRenderTarget メソッドに渡し、DXGI サーフェイス レンダー ターゲットを作成します。その後、DXGI サーフェイス レンダー ターゲットを使用して DXGI サーフェイスに 2-D コンテンツを描画できます。

DXGI サーフェイス レンダー ターゲットは ID2D1RenderTarget の 1 つです。他の Direct2D レンダー ターゲットと同様に、DXGI サーフェイス レンダー ターゲットはリソースの作成および描画コマンドの発行に使用できます。

DXGI サーフェイス レンダー ターゲットと DXGI サーフェイスは、同じ DXGI 形式を使用する必要があります。レンダー ターゲットの作成時に DXGI_FORMAT_UNKOWN 形式を指定した場合、サーフェイスの形式が自動的に使用されます。

DXGI サーフェイス レンダー ターゲットでは DXGI サーフェイス同期は実行されません。

Direct2D で機能させるには、D3D10_CREATE_DEVICE_BGRA_SUPPORT フラグを使用して、IDXGISurface を提供する Direct3D デバイスを作成する必要があります。

DXGI サーフェイス レンダー ターゲットの作成と使用の詳細については、「Direct2D と Direct3D の相互運用性の概要」を参照してください。

レンダー ターゲットを作成し、ハードウェア アクセラレータが使用できる場合は、コンピューターの GPU にリソースを割り当てます。レンダー ターゲットを一度作成し、できるだけ長く保持することにより、パフォーマンスを向上することができます。アプリケーションでは、一度レンダー ターゲットを作成したら、アプリケーションが有効な間またはレンダー ターゲットの EndDraw メソッドから D2DERR_RECREATE_TARGET エラーが返されるまでは、そのターゲットを保持する必要があります。このエラーが発生すると、レンダー ターゲット (およびレンダー ターゲットによって作成されたすべてのリソース) を作成し直す必要があります。

次の例では、IDXGISwapChain から DXGI サーフェイス (pBackBuffer) を取得し、それを使用して DXGI サーフェイス レンダー ターゲットを作成します。

  // Get a surface in the swap chain
hr = m_pSwapChain->GetBuffer(
    0,
    IID_PPV_ARGS(&pBackBuffer)
    );
    if (SUCCEEDED(hr))
    {
        // Create the DXGI Surface Render Target.
        FLOAT dpiX;
        FLOAT dpiY;
        m_pD2DFactory->GetDesktopDpi(&dpiX, &dpiY);

        D2D1_RENDER_TARGET_PROPERTIES props =
            D2D1::RenderTargetProperties(
                D2D1_RENDER_TARGET_TYPE_DEFAULT,
                D2D1::PixelFormat(DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_PREMULTIPLIED),
                dpiX,
                dpiY
                );

        // Create a Direct2D render target which can draw into the surface in the swap chain
        hr = m_pD2DFactory->CreateDxgiSurfaceRenderTarget(
            pBackBuffer,
            &props,
            &m_pBackBufferRT
            );

    }

完全なコードについては、「Direct3D 相互運用機能のサンプル」を参照してください。

要件

ライブラリ

D2d1.lib

DLL

D2d1.dll

参照

ID2D1Factory

ID2D1Factory

Direct2D と Direct3D の相互運用性の概要

Direct3D 相互運用機能のサンプル