Share via


ID2D1Factory::CreateDxgiSurfaceRenderTarget(IDXGISurface*,constD2D1_RENDER_TARGET_PROPERTIES*,ID2D1RenderTarget**) 메서드(d2d1.h)

DXGI(DirectX Graphics Infrastructure) 화면에 그리는 렌더링 대상을 만듭니다.

구문

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차원 콘텐츠를 그릴 수 있습니다.

DXGI 표면 렌더링 대상은 ID2D1RenderTarget의 유형입니다. 다른 Direct2D 렌더링 대상과 마찬가지로 이를 사용하여 리소스를 만들고 그리기 명령을 실행할 수 있습니다.

DXGI 표면 렌더링 대상과 DXGI 표면은 동일한 DXGI 형식을 사용해야 합니다. 렌더링 대상을 만들 때 DXGI_FORMAT_UNKOWN 형식을 지정하면 표면의 형식이 자동으로 사용됩니다.

DXGI 표면 렌더링 대상은 DXGI 표면 동기화를 수행하지 않습니다.

DXGI 표면 렌더링 대상을 만들고 사용하는 방법에 대한 자세한 내용은 Direct2D 및 Direct3D 상호 운용성 개요를 참조하세요.

Direct2D를 사용하려면 IDXGISurface 를 제공하는 Direct3D 디바이스를 D3D10_CREATE_DEVICE_BGRA_SUPPORT 플래그로 만들어야 합니다.

렌더링 대상을 만들고 하드웨어 가속을 사용할 수 있는 경우 컴퓨터의 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
라이브러리 D2d1.lib
DLL D2d1.dll

추가 정보

CreateDxgiSurfaceRenderTarget(IDXGISurface,const D2D1_RENDER_TARGET_PROPERTIES &,ID2D1RenderTarget)

Direct2D 및 Direct3D 상호 운용성 개요

ID2D1Factory