Bagikan melalui


ID2D1Factory::CreateDxgiSurfaceRenderTarget(IDXGISurface*,constD2D1_RENDER_TARGET_PROPERTIES*,ID2D1RenderTarget**) metode (d2d1.h)

Membuat target render yang menarik ke permukaan DirectX Graphics Infrastructure (DXGI).

Sintaks

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

Parameter

[in] dxgiSurface

Jenis: IDXGISurface*

IDXGISurface yang akan ditarik target render.

[in] renderTargetProperties

Jenis: const D2D1_RENDER_TARGET_PROPERTIES*

Mode penyajian, format piksel, opsi remoting, informasi DPI, dan dukungan DirectX minimum yang diperlukan untuk penyajian perangkat keras. Untuk informasi tentang format piksel yang didukung, lihat Format Piksel dan Mode Alfa yang Didukung.

[out] renderTarget

Jenis: ID2D1RenderTarget**

Ketika metode ini kembali, berisi alamat penunjuk ke objek ID2D1RenderTarget yang dibuat oleh metode ini.

Mengembalikan nilai

Jenis: HRESULT

Jika metode ini berhasil, metode ini mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Untuk menulis ke permukaan Direct3D, Anda mendapatkan IDXGISurface dan meneruskannya ke metode CreateDxgiSurfaceRenderTarget untuk membuat target render permukaan DXGI; Anda kemudian dapat menggunakan target render permukaan DXGI untuk menggambar konten 2-D ke permukaan DXGI.

Target render permukaan DXGI adalah jenis ID2D1RenderTarget. Seperti target render Direct2D lainnya, Anda dapat menggunakannya untuk membuat sumber daya dan mengeluarkan perintah menggambar.

Target render permukaan DXGI dan permukaan DXGI harus menggunakan format DXGI yang sama. Jika Anda menentukan format DXGI_FORMAT_UNKOWN saat membuat target render, format permukaan akan otomatis digunakan.

Target render permukaan DXGI tidak melakukan sinkronisasi permukaan DXGI.

Untuk informasi selengkapnya tentang membuat dan menggunakan target render permukaan DXGI, lihat Gambaran Umum Interoperabilitas Direct2D dan Direct3D.

Untuk bekerja dengan Direct2D, perangkat Direct3D yang menyediakan IDXGISurface harus dibuat dengan bendera D3D10_CREATE_DEVICE_BGRA_SUPPORT .

Saat Anda membuat target render dan akselerasi perangkat keras tersedia, Anda mengalokasikan sumber daya di GPU komputer. Dengan membuat target render sekali dan mempertahankannya selama mungkin, Anda mendapatkan manfaat performa. Aplikasi Anda harus membuat target render sekali dan menahannya selama masa pakai aplikasi atau sampai metode EndDraw target render mengembalikan kesalahan D2DERR_RECREATE_TARGET . Ketika Anda menerima kesalahan ini, Anda perlu membuat ulang target render (dan sumber daya apa pun yang dibuatnya).

Contoh

Contoh berikut mendapatkan permukaan DXGI (pBackBuffer) dari IDXGISwapChain dan menggunakannya untuk membuat target render permukaan 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);
}

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d2d1.h
Pustaka D2d1.lib
DLL D2d1.dll

Lihat juga

CreateDxgiSurfaceRenderTarget(IDXGISurface,const D2D1_RENDER_TARGET_PROPERTIES &,ID2D1RenderTarget)

Gambaran umum interoperabilitas Direct2D dan Direct3D

ID2D1Factory