Метод 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 |