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 支持。 有关支持的像素格式的信息,请参阅 支持的像素格式和 Alpha 模式

[out] renderTarget

类型: ID2D1RenderTarget**

此方法返回时,包含指向此方法创建的 ID2D1RenderTarget 对象的指针的地址。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。

注解

若要写入 Direct3D 图面,请获取 IDXGISurface 并将其传递给 CreateDxgiSurfaceRenderTarget 方法来创建 DXGI 表面呈现目标;然后,可以使用 DXGI 表面呈现目标将二维内容绘制到 DXGI 图面。

DXGI 表面呈现目标是 一种 ID2D1RenderTarget。 与其他 Direct2D 呈现目标一样,可以使用它创建资源并发出绘图命令。

DXGI 表面呈现目标和 DXGI 图面必须使用相同的 DXGI 格式。 如果在创建呈现目标时指定 DXGI_FORMAT_UNKOWN 格式,则它将自动使用图面的格式。

DXGI 表面呈现目标不执行 DXGI 表面同步。

有关创建和使用 DXGI 表面呈现目标的详细信息,请参阅 Direct2D 和 Direct3D 互操作性概述

若要使用 Direct2D,必须使用 D3D10_CREATE_DEVICE_BGRA_SUPPORT 标志创建提供 IDXGISurfaceDirect3D 设备。

创建呈现目标且硬件加速可用时,可以在计算机的 GPU 上分配资源。 通过创建一次呈现器目标并尽可能长时间地保留它,可以获得性能优势。 应用程序应创建呈现目标一次,并在应用程序的生命周期内保留这些目标,或者直到呈现目标的 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