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


Метод IDCompositionDevice2::CreateVirtualSurface (dcomp.h)

Создает слабо заполненную поверхность, которая может быть связана с одним или несколькими визуальными элементами для композиции.

Синтаксис

HRESULT CreateVirtualSurface(
  [in]  UINT                        initialWidth,
  [in]  UINT                        initialHeight,
  [in]  DXGI_FORMAT                 pixelFormat,
  [in]  DXGI_ALPHA_MODE             alphaMode,
  [out] IDCompositionVirtualSurface **virtualSurface
);

Параметры

[in] initialWidth

Тип: UINT

Ширина поверхности в пикселях. Максимальная ширина составляет 16 777 216 пикселей.

[in] initialHeight

Тип: UINT

Высота поверхности в пикселях. Максимальная высота составляет 16 777 216 пикселей.

[in] pixelFormat

Тип: DXGI_FORMAT

Формат пикселей поверхности.

[in] alphaMode

Тип: DXGI_ALPHA_MODE

Значение альфа-канала, если формат пикселей содержит альфа-канал. Может иметь одно из следующих значений.

Значение Значение
DXGI_ALPHA_MODE_UNSPECIFIED
Альфа-канал не указан. Это значение имеет тот же эффект, что и DXGI_ALPHA_MODE_IGNORE.
DXGI_ALPHA_MODE_PREMULTIPLIED
Цветовые каналы содержат значения, которые предварительно связаны с альфа-каналом.
DXGI_ALPHA_MODE_IGNORE
Альфа-канал следует игнорировать, а растровое изображение должно отображаться непрозрачно.

[out] virtualSurface

Тип: IDCompositionVirtualSurface**

Вновь созданный объект surface. Этот параметр не должен иметь значение NULL.

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

Тип: HRESULT

Если функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT . Список кодов ошибок см. в разделе Коды ошибок DirectComposition .

Комментарии

Разреженная поверхность Microsoft DirectComposition — это логический объект, который ведет себя как прямоугольный массив пикселей, который может быть связан с визуальным элементом для композиции. Поверхность не обязательно поддерживается физическим видео или системной памятью для каждого пикселя. Приложение может реализовать или виртуализировать части логической поверхности в разное время.

Созданный объект surface находится в неинициализированном состоянии. Пока она не инициализирована, поверхность не влияет на состав визуального дерева. Он ведет себя точно так же, как поверхность, которая инициализирована 100 % прозрачными пикселями.

Чтобы инициализировать поверхность с пиксельными данными, используйте методы IDCompositionSurface::BeginDraw и IDCompositionSurface::EndDraw . Этот метод не только предоставляет пиксели для поверхности, но и выделяет фактическое дисковое пространство для этих пикселей. Выделение памяти сохраняется до тех пор, пока приложение не вернет часть памяти в систему. Приложение может освободить часть или всю выделенную память, вызвав метод IDCompositionVirtualSurface::Trim .

Поверхности DirectComposition поддерживают следующие форматы пикселей:

  • DXGI_FORMAT_B8G8R8A8_UNORM
  • DXGI_FORMAT_R8G8B8A8_UNORM
  • DXGI_FORMAT_R16G16B16A16_FLOAT
Этот метод завершается ошибкой, если значение initialWidth или initialHeight превышает 16 777 216 пикселей.

Требования

Требование Значение
Минимальная версия клиента Windows 8.1 [только классические приложения]
Минимальная версия сервера Windows Server 2012 R2 [только классические приложения]
Целевая платформа Windows
Header dcomp.h
Библиотека Dcomp.lib
DLL Dcomp.dll

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

IDCompositionDevice2

IDCompositionDevice::CreateSurface