Поделиться через


Метод ID2D1DeviceContext2::CreateImageSourceFromDxgi (d2d1_3.h)

Создает источник изображения из набора поверхностей DXGI. Поверхности YCbCr автоматически преобразуются в RGBA во время последующего рисования.

Синтаксис

HRESULT CreateImageSourceFromDxgi(
  IDXGISurface                        **surfaces,
  UINT32                              surfaceCount,
  DXGI_COLOR_SPACE_TYPE               colorSpace,
  D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS options,
  ID2D1ImageSource                    **imageSource
);

Параметры

surfaces

Тип: [in] IDXGISurface**

DXGI создает источник изображения.

surfaceCount

Тип: UINT32

Количество предоставленных поверхностей; значение должно находиться в диапазоне от одного до трех.

colorSpace

Тип: DXGI_COLOR_SPACE_TYPE

Цветовое пространство входных данных.

options

Тип: D2D1_IMAGE_SOURCE_FROM_DXGI_OPTIONS

Параметры, управляющие преобразованиями цветового пространства.

imageSource

Тип: [out] ID2D1ImageSource**

Получает новый экземпляр источника образа.

Возвращаемое значение

Тип: HRESULT

S_OK в случае успешного выполнения, в противном случае — сбой HRESULT.

Комментарии

Этот метод создает источник изображения, который можно использовать для рисования изображения.

Этот метод поддерживает поверхности, использующие ограниченный набор форматов DXGI и типов цветового пространства DXGI. Поддерживаются только следующие сочетания типов цветовых пространств, форматов поверхностей и количества поверхностей:

Тип цветового пространства Число поверхностей Форматы Surface
DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 1 Стандартные форматы пикселей, поддерживаемые D2D:
  • DXGI_FORMAT_A8_UNORM
  • DXGI_FORMAT_R8_UNORM
  • DXGI_FORMAT_R8G8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_B8G8R8A8_UNORM
  • DXGI_FORMAT_B8G8R8X8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
  • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
  • DXGI_FORMAT_R16G16B16A16_FLOAT
  • DXGI_FORMAT_R16G16B16A16_UNORM
  • DXGI_FORMAT_R32G32B32A32_FLOAT
  • DXGI_FORMAT_BC1_UNORM
  • DXGI_FORMAT_BC2_UNORM
  • DXGI_FORMAT_BC3_UNORM
DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 1, 2, 3 Если число surface равно 1:
  • DXGI_FORMAT_AYUV
  • DXGI_FORMAT_NV12
  • DXGI_FORMAT_YUY2
  • DXGI_FORMAT_P208
  • DXGI_FORMAT_V208
  • DXGI_FORMAT_V408
Если surface Count равен 2, выполните приведенные далее действия.
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM}
Если surface Count равен 3:
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM}
DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601

DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709

DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709

DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020

DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020

1,2,3 Если число surface равно 1:
  • DXGI_FORMAT_NV12
  • DXGI_FORMAT_YUY2
  • DXGI_FORMAT_P208
  • DXGI_FORMAT_V208
Если surface Count равен 2, выполните приведенные далее действия.
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8G8_UNORM}
Если surface Count равен 3:
  • {DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM, DXGI_FORMAT_R8_UNORM}
 

Gpu также должен иметь достаточную поддержку формата пикселей для поддержки D2D. Чтобы определить, поддерживает ли D2D формат, вызовите IsDxgiFormatSupported.

Этот API преобразует форматы YCbCr в sRGB с помощью указанного типа цветового пространства и параметров. Предполагается, что данные RGBA будут находиться в нужном пространстве, и D2D не применяет преобразование.

Если предоставлено несколько поверхностей, этот метод определяет, являются ли плоскости хрома подвыбранными (в 2x) относительными размерами каждого соответствующего исходного прямоугольника (или если параметр исходных прямоугольников имеет значение NULL, границы каждой поверхности). Второй и третий прямоугольники должны быть равными по размеру первому прямоугольнику или первому прямоугольнику с одним или обоими измерениями, масштабируемыми на 0,5 (с округлением вверх).

Если задано, исходные прямоугольники должны находиться в пределах соответствующей поверхности. Исходные прямоугольники могут иметь разные источники. В этом случае этот метод перемещает данные из каждой плоскости в соответствии друг с другом.

Требования

Требование Значение
Минимальная версия клиента Windows 10 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2016 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d2d1_3.h
DLL D2d1.dll

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

ID2D1DeviceContext2