Метод IDXGIOutput5::D uplicateOutput1 (dxgi1_5.h)

Позволяет указать список поддерживаемых форматов для полноэкранных поверхностей, которые могут возвращаться объектом IDXGIOutputDuplication .

Синтаксис

HRESULT DuplicateOutput1(
  [in]  IUnknown               *pDevice,
        UINT                   Flags,
  [in]  UINT                   SupportedFormatsCount,
  [in]  const DXGI_FORMAT      *pSupportedFormats,
  [out] IDXGIOutputDuplication **ppOutputDuplication
);

Параметры

[in] pDevice

Тип: IUnknown*

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

Flags

Тип: UINT

Битовое поле DXGI_OUTDUPL_FLAG значений перечисления, описывающих тип создаваемой области захвата.

[in] SupportedFormatsCount

Тип: UINT

Указывает количество поддерживаемых форматов.

[in] pSupportedFormats

Тип: const DXGI_FORMAT*

Указывает массив с длиной SupportedFormatsCountDXGI_FORMAT записей.

[out] ppOutputDuplication

Тип: IDXGIOutputDuplication**

Указатель на переменную, которая получает новый интерфейс IDXGIOutputDuplication .

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

Тип: HRESULT

  • S_OK, если DuplicateOutput1 успешно создал интерфейс дублирования рабочего стола.
  • E_INVALIDARG по одной из следующих причин:
    • Указанное устройство (pDevice) является недопустимым, не было создано на правильном адаптере или не было создано из IDXGIFactory1 (или более поздней версии фабричного интерфейса DXGI, наследуемого от IDXGIFactory1).
    • Вызывающее приложение уже дублирует эти выходные данные рабочего стола.
  • E_ACCESSDENIED, если приложение не имеет прав доступа к текущему образу рабочего стола. Например, доступ к защищенному рабочему столу может получить только приложение, которое выполняется на LOCAL_SYSTEM.
  • DXGI_ERROR_UNSUPPORTED, если созданный интерфейс IDXGIOutputDuplication не поддерживает текущий режим рабочего стола или сценарий. Например, режимы рабочего стола 8bpp и без DWM не поддерживаются.

    Если duplicateOutput1 завершается сбоем с DXGI_ERROR_UNSUPPORTED, приложение может дождаться системного уведомления о переключениях рабочего стола и изменениях режима, а затем снова вызвать DuplicateOutput1 после получения такого уведомления. Дополнительные сведения см. в разделах Переключение рабочего стола (EVENT_SYSTEM_DESKTOPSWITCH) и уведомление об изменении режима (WM_DISPLAYCHANGE).

  • DXGI_ERROR_NOT_CURRENTLY_AVAILABLE, достигла ли DXGI ограничения на максимальное число одновременных дублирующихся приложений (по умолчанию — четыре). Таким образом, вызывающее приложение не может создавать интерфейсы дублирования рабочего стола, пока другие приложения не будут закрыты.
  • DXGI_ERROR_SESSION_DISCONNECTED, если сбой DuplicateOutput1 , так как сеанс в настоящее время отключен.
  • Другие коды ошибок описаны в разделе DXGI_ERROR .

Комментарии

Этот метод позволяет напрямую получать исходный формат буфера задней части, используемый работающим полноэкранным приложением. Для сравнения, при использовании исходной функции DuplicateOutput область полноэкранного режима всегда преобразуется в 32-разрядный формат BGRA. В случаях, когда текущее полноэкранное приложение использует другой формат буфера, преобразование в 32-разрядный формат BGRA влечет за собой снижение производительности. Помимо преимущества производительности, поскольку возможность пропускать преобразование формата, использование DuplicateOutput1 также позволяет получить полную гамму цветов в тех случаях, когда представлен формат с высоким цветом (например, R10G10B10A2).

Массив pSupportedFormats должен содержать только форматы сканирования отображения. Требуемые форматы сканирования на каждом уровне компонентов на каждом уровне компонентов см. в разделе Поддержка форматирования для оборудования Direct3D 11.0 . Если текущий полноэкранный буферный формат не содержится в массиве pSupportedFormats , DXGI выберет один из предоставленных форматов и преобразует полноэкранный буфер в этот формат перед возвратом из IDXGIOutputDuplication::AcquireNextFrame. Список поддерживаемых форматов всегда должен содержать DXGI_FORMAT_B8G8R8A8_UNORM, так как это наиболее распространенный формат для рабочего стола.

Требования

Требование Значение
Целевая платформа Windows
Header dxgi1_5.h
Библиотека Dxgi.lib
DLL Dxgi.dll

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

DuplicateOutput

IDXGIOutput5