共用方式為


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 表面轉譯目標,將 2D 內容繪製到 DXGI 表面。

DXGI 表面轉譯目標是 ID2D1RenderTarget的類型。 就像其他 Direct2D 轉譯目標一樣,您可以使用它來建立資源和發出繪圖命令。

DXGI 表面轉譯目標和 DXGI 介面必須使用相同的 DXGI 格式。 如果您在建立轉譯目標時指定 DXGI_FORMAT_UNKOWN 格式,它會自動使用介面的格式。

DXGI 表面轉譯目標不會執行 DXGI 表面同步處理。

如需建立和使用 DXGI 表面轉譯目標的詳細資訊,請參閱 Direct2D 和 Direct3D 互操作性概觀

若要使用 Direct2D,您必須使用 D3D10_CREATE_DEVICE_BGRA_SUPPORT 旗標建立提供 IDXGISurface 的 Direct3D 裝置。

當您建立轉譯目標和硬體加速可用時,您會在計算機的 GPU 上配置資源。 藉由建立轉譯目標一次,並盡可能保留它,即可獲得效能優勢。 您的應用程式應該建立轉譯目標一次,並在應用程式存留期間保留它們,或直到轉譯目標的 EndDraw 方法傳回 D2DERR_RECREATE_TARGET 錯誤為止。 當您收到此錯誤時,您必須重新建立轉譯目標 (及其建立的任何資源) 。

範例

下列範例會從IDXGISwapChain取得 PBackBuffer (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
程式庫 D2d1.lib
Dll D2d1.dll

另請參閱

CreateDxgiSurfaceRenderTarget (IDXGISurface,const D2D1_RENDER_TARGET_PROPERTIES &,ID2D1RenderTarget)

Direct2D 和 Direct3D 互操作性概觀

ID2D1Factory