次の方法で共有


ID2D1Factory::CreateDxgiSurfaceRenderTarget(IDXGISurface*,constD2D1_RENDER_TARGET_PROPERTIES*,ID2D1RenderTarget**) メソッド (d2d1.h)

DirectX グラフィックス インフラストラクチャ (DXGI) サーフェスに描画するレンダー ターゲットを作成します。

構文

HRESULT CreateDxgiSurfaceRenderTarget(
  [in]  IDXGISurface                        *dxgiSurface,
  [in]  const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties,
  [out] ID2D1RenderTarget                   **renderTarget
);

パラメーター

[in] dxgiSurface

種類: IDXGISurface*

レンダー ターゲットが描画される IDXGISurface。

[in] renderTargetProperties

型: const D2D1_RENDER_TARGET_PROPERTIES*

レンダリング モード、ピクセル形式、リモート処理オプション、DPI 情報、ハードウェア レンダリングに必要な最小 DirectX サポート。 サポートされているピクセル形式の詳細については、「 サポートされているピクセル形式とアルファ モード」を参照してください。

[out] renderTarget

種類: ID2D1RenderTarget**

このメソッドから制御が戻るときに、このメソッドによって作成された ID2D1RenderTarget オブジェクトへのポインターのアドレスが格納されます。

戻り値

型: HRESULT

このメソッドは、成功すると S_OK を返します。 それ以外の場合は、 HRESULT エラー コードが返されます。

注釈

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

DXGI サーフェス レンダー ターゲットは、 ID2D1RenderTarget の一種です。 他の Direct2D レンダー ターゲットと同様に、それを使用してリソースを作成し、描画コマンドを発行できます。

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

DXGI サーフェス レンダー ターゲットは DXGI サーフェス同期を実行しません。

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

Direct2D を操作するには、 IDXGISurface を提供する Direct3D デバイスを D3D10_CREATE_DEVICE_BGRA_SUPPORT フラグで作成する必要があります。

レンダー ターゲットを作成し、ハードウェア アクセラレーションを使用できる場合は、コンピューターの GPU にリソースを割り当てます。 レンダー ターゲットを 1 回作成し、可能な限り長く保持することで、パフォーマンス上の利点が得られます。 アプリケーションでは、レンダー ターゲットを 1 回作成し、アプリケーションの有効期間中、またはレンダー ターゲットの EndDraw メソッドが D2DERR_RECREATE_TARGET エラーを返すまで保持する必要があります。 このエラーが発生した場合は、レンダー ターゲット (および作成したリソース) を再作成する必要があります。

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

// Initialize *hwnd* with the handle of the window displaying the rendered content.
HWND hwnd;

// 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 dpi = GetDpiForWindow(hwnd);

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

    // Create a Direct2D render target that can draw into the surface in the swap chain.

    hr = m_pD2DFactory->CreateDxgiSurfaceRenderTarget(
        pBackBuffer,
        &props,
        &m_pBackBufferRT);
}

要件

要件
対象プラットフォーム Windows
ヘッダー d2d1.h
Library D2d1.lib
[DLL] D2d1.dll

こちらもご覧ください

CreateDxgiSurfaceRenderTarget(IDXGISurface,const D2D1_RENDER_TARGET_PROPERTIES &,ID2D1RenderTarget)

Direct2D と Direct3D の相互運用性に関する概要

ID2D1Factory