DXGI_PRESENT

Константы DXGI_PRESENT указывают параметры для представления кадров в выходных данных.

Констант/значение Описание
0
Представить кадр из каждого буфера (начиная с текущего буфера) в выходные данные.
DXGI_PRESENT_DO_NOT_SEQUENCE
0x00000002UL
Представить кадр из текущего буфера в выходные данные. Используйте этот флаг, чтобы в презентации можно было использовать вертикальную пустую синхронизацию вместо виртуализации буферов в цепочке обычным способом.
Примечание: Если вызывающее приложение задает константу DXGI_PRESENT_DO_NOT_SEQUENCE при первой текущей операции (т. е. при отсутствии текущего буфера), среда выполнения игнорирует текущую операцию и не вызывает драйвер.
DXGI_PRESENT_TEST
0x00000001UL
Не показывать кадр в выходных данных. Состояние цепочки буферов будет проверено, и будут возвращены соответствующие ошибки. DXGI_PRESENT_TEST предназначен для использования только при переключении из состояния простоя; не используйте его для определения того, когда следует переключиться в состояние простоя, так как это может оставить цепочку буферов невозможной выйти из полноэкранного режима.
DXGI_PRESENT_RESTART
0x00000004UL
Указывает, что среда выполнения отменит незаполненные представления в очереди.
DXGI_PRESENT_DO_NOT_WAIT
0x00000008UL
Указывает, что среда выполнения завершит презентацию (т. е. вызов IDXGISwapChain1::P resent1) с кодом ошибки DXGI_ERROR_WAS_STILL_DRAWING , если вызывающий поток заблокирован; среда выполнения возвращает DXGI_ERROR_WAS_STILL_DRAWING вместо спящего, пока зависимость не будет разрешена.
Direct3D 11: Это значение перечисления поддерживается начиная с Windows 8.
DXGI_PRESENT_RESTRICT_TO_OUTPUT
0x00000010UL
Указывает, что содержимое презентации будет отображаться только в определенных выходных данных. Содержимое не будет отображаться в других выходных данных. Например, если пользователь попытается переместить видеосодержимые на другой выход, оно не будет отображаться.
Direct3D 11: Это значение перечисления поддерживается начиная с Windows 8.
Примечание: Этот флаг следует использовать только с эффектом переключения DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL или DXGI_SWAP_EFFECT_FLIP_DISCARD. Использование этого флага с другими эффектами переключения является устаревшим и может не работать в будущих версиях Windows.
DXGI_PRESENT_STEREO_PREFER_RIGHT
0x00000020UL
Указывает, что если стереосутство должно быть уменьшено до моно, используется просмотр с правого глаза, а не с левого глаза.
Direct3D 11: Это значение перечисления поддерживается начиная с Windows 8.
DXGI_PRESENT_STEREO_TEMPORARY_MONO
0x00000040UL
Указывает, что презентация должна использовать левый буфер в качестве моно-буфера. Приложение вызывает метод IDXGISwapChain1::IsTemporaryMonoSupported , чтобы определить, поддерживает ли цепочка буферов "временную моно".
Direct3D 11: Это значение перечисления поддерживается начиная с Windows 8.
DXGI_PRESENT_USE_DURATION
0x00000100UL
Этот флаг должен быть установлен приложениями мультимедиа, которые в настоящее время используют настраиваемую длительность (пользовательскую частоту обновления). См . раздел IDXGISwapChainMedia.
Примечание: Это значение поддерживается начиная с Windows 8.1.
DXGI_PRESENT_ALLOW_TEARING
0x00000200UL
Разрешение разрыва является обязательным требованием для отображения переменной частоты обновления.
Ниже приведены условия использования DXGI_PRESENT_ALLOW_TEARING во время презентации.
  • Цепочка буферов должна быть создана с флагом DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING .
  • Интервал синхронизации, передаваемый в Present (или Present1), должен быть равен 0.
  • Флаг DXGI_PRESENT_ALLOW_TEARING нельзя использовать в приложении, которое в настоящее время находится в монопольном полноэкранном режиме (устанавливается путем вызова SetFullscreenState(TRUE)). Его можно использовать только в оконном режиме. Чтобы использовать этот флаг в полноэкранных приложениях Win32, приложение должно отобразиться в полноэкранном окне без границ и отключить автоматическое переключение alt+ВВОД полноэкранного режима с помощью IDXGIFactory::MakeWindowAssociation. Приложения UWP, которые переходят в полноэкранный режим путем вызова Windows::UI::ViewManagement::ApplicationView::TryEnterFullscreen() , являются полноэкранными окнами без границ и могут использовать флаг .
Вызов Present (или Present1) с этим флагом и не выполнение указанных выше условий приведет к DXGI_ERROR_INVALID_CALL ошибке, возвращаемой вызывающей приложению.

Комментарии

Параметры представления предоставляются во время вызова IDXGISwapChain::P resent или IDXGISwapChain1::P resent1 . Буферы указываются в описании цепочки буферов (см . раздел DXGI_SWAP_CHAIN_DESC или DXGI_SWAP_CHAIN_DESC1).

DXGI_PRESENT_RESTART действителен только для цепочек буферов модели flip и полноэкранного режима. Приложения могут использовать DXGI_PRESENT_RESTART для восстановления после сбоев при воспроизведении, а также для отмены ранее поставленных в очередь презентаций. Отмена ранее поставленных в очередь презентаций полезна, если эти презентации в очереди являются оконными сценариями. В частности, ранее поставленная в очередь презентация могла предполагать, что окно имеет старый размер (то есть операция изменения размера произошла после отправки).

DXGI_PRESENT_RESTRICT_TO_OUTPUT допустимо только для цепочек буферов, в которых указан определенный выход, чтобы ограничить содержимое моментом создания этих цепочек буферов (IDXGIFactory2::CreateSwapChainForHwnd). Если выходные данные для ограничения отсутствуют, флаг является недопустимым.

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

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

Вы должны использовать флаг DXGI_PRESENT_STEREO_TEMPORARY_MONO, чтобы переключиться на моно-цепочку буферов для большинства приложений, которые, как предполагается, снова будут использовать стерео. Необходимо сбалансировать использование этого флага в приложениях, которые работают очень долго или редко отображают стерео, с недостатком неиспользуемой памяти.

Примечание

Полноэкранные приложения, которые переключаются на монозонную цепочку буферов, вызывают изменение режима, которое обычно имеет видимые артефакты (например, "мигает"). Однако временный моно может не поддерживаться для цепочек буферов в полноэкранном режиме.

 

Флаги DXGI_PRESENT_STEREO_PREFER_RIGHT и DXGI_PRESENT_STEREO_TEMPORARY_MONO применяются только к цепочкам буферов стерео. Если вы используете их при представлении моносетей буферов, происходит недопустимая операция.

Если вы используете флаг DXGI_PRESENT_STEREO_TEMPORARY_MONO при представлении цепочки буферов стерео, которая не поддерживает временную моно, возникает ошибка, цепочка буферов не отображается, а презентация возвращает DXGI_ERROR_INVALID_CALL.

Требования

Требование Значение
Заголовок
DXGI.h

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

Константы DXGI