МЕТОД 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.

Целевой объект отрисовки поверхности DXGI — это тип ID2D1RenderTarget. Как и другие целевые объекты отрисовки Direct2D, его можно использовать для создания ресурсов и выполнения команд рисования.

Целевой объект отрисовки поверхности DXGI и поверхность DXGI должны использовать один и тот же формат DXGI. Если при создании целевого объекта отрисовки указать формат DXGI_FORMAT_UNKOWN , он будет автоматически использовать формат поверхности.

Целевой объект отрисовки поверхности DXGI не выполняет синхронизацию поверхности DXGI.

Дополнительные сведения о создании и использовании целевых объектов визуализации поверхности DXGI см. в статье Общие сведения о взаимодействии Direct2D и Direct3D.

Для работы с Direct2D необходимо создать устройство Direct3D, предоставляющее IDXGISurface , с флагом D3D10_CREATE_DEVICE_BGRA_SUPPORT .

Когда вы создаете целевой объект отрисовки и доступно аппаратное ускорение, вы выделяете ресурсы на GPU компьютера. Создавая целевой объект отрисовки один раз и сохраняя его как можно дольше, вы получаете преимущества производительности. Приложение должно создать целевые объекты отрисовки один раз и удерживать их на протяжении всего времени существования приложения или до тех пор, пока метод EndDraw целевого объекта отрисовки не вернет ошибку D2DERR_RECREATE_TARGET . При возникновении этой ошибки необходимо повторно создать целевой объект отрисовки (и все созданные им ресурсы).

Примеры

В следующем примере показано, как получить поверхность DXGI (pBackBuffer) из IDXGISwapChain и использовать ее для создания целевого объекта отрисовки поверхности 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
Header d2d1.h
Библиотека D2d1.lib
DLL D2d1.dll

См. также раздел

CreateDxgiSurfaceRenderTarget(IDXGISurface,const D2D1_RENDER_TARGET_PROPERTIES &,ID2D1RenderTarget)

Общие сведения о взаимодействии Direct2D и Direct3D

ID2D1Factory