Метод IDXGISwapChain::P resent (dxgi.h)
Представляет пользователю отрисованное изображение.
Синтаксис
HRESULT Present(
UINT SyncInterval,
UINT Flags
);
Параметры
SyncInterval
Тип: UINT
Целое число, указывающее способ синхронизации представления кадра с вертикальным пустым.
Для модели передачи битовых блоков (bitblt) (DXGI_SWAP_EFFECT_DISCARD или DXGI_SWAP_EFFECT_SEQUENTIAL) значения:
- 0 — презентация происходит немедленно, синхронизация отсутствует.
- От 1 до 4 — синхронизация презентации после n-говертикального пустого.
- 0 — отмена оставшегося времени для ранее представленного кадра и отмена этого кадра, если новый кадр поставлен в очередь.
- От 1 до 4 — синхронизация представления по крайней мере для n вертикальных пробелов.
Если область обновления состоит из нескольких выходных данных (каждый из которых представлен IDXGIOutput), функция Present выполняет синхронизацию с выходными данными, содержащими самый большой вложенный прямоугольник клиентской области целевого окна.
Flags
Тип: UINT
Целочисленное значение, содержащее параметры представления цепочки буферов. Эти параметры определяются константами DXGI_PRESENT .
Возвращаемое значение
Тип: HRESULT
Возможные возвращаемые значения: S_OK, DXGI_ERROR_DEVICE_RESET или DXGI_ERROR_DEVICE_REMOVED (см . DXGI_ERROR), DXGI_STATUS_OCCLUDED (см. DXGI_STATUS) или D3DDDIERR_DEVICEREMOVED.
Комментарии
Начиная с Direct3D 11.1, рассмотрите возможность использования IDXGISwapChain1::P resent1, так как затем можно использовать грязное прямоугольники и прямоугольник прокрутки в презентации цепочки буферов и таким образом использовать меньшую пропускную способность памяти и, как следствие, меньше энергии системы. Дополнительные сведения об использовании грязное прямоугольников и прямоугольника прокрутки в презентации цепочки буферов см. в разделе Использование грязное прямоугольников и прямоугольника прокрутки в презентации цепочки буферов.
Сведения о наилучшей производительности при переключении буферов цепочки буферов в полноэкранном приложении см. в разделе Указания по производительности полноэкранных приложений.
Так как вызов Present может привести к тому, что поток отрисовки будет ждать потока накачки сообщений, будьте внимательны при вызове этого метода в приложении, которое использует несколько потоков. Дополнительные сведения см. в разделе Рекомендации по многопоточности.
Различия между Direct3D 9 и Direct3D 10: Указание DXGI_PRESENT_TEST в параметре Flags аналогично IDirect3DDevice9::TestCooperativeLevel в Direct3D 9. |
Если вы создаете цепочки буферов модели представления с помощью DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL или DXGI_SWAP_EFFECT_DISCARD значения, успешная презентация отменяет обратную привязку буфера 0 (обычно устанавливается OMSetRenderTargets) из графического конвейера, за исключением случаев, когда вы передаете флаг DXGI_PRESENT_DO_NOT_SEQUENCE в параметре Flags .
Сведения о том, как изменяются значения данных при отображении содержимого на экране, см. в разделе Преобразование данных для цветового пространства.
Очередь модели представления flip
Предположим, что следующие кадры со значениями интервала синхронизации помещаются в очередь из старых (A) в новые (E) перед вызовом Present.A: 3, B: 0, C: 0, D: 1, E: 0
При вызове Present среда выполнения отображает кадр A только для 1 вертикального пустого интервала. Среда выполнения завершает кадр A рано из-за интервала синхронизации 0 в кадре B. Затем среда выполнения отображает кадр D для 1 вертикального пустого интервала, а затем кадр E, пока вы не отправите новую презентацию. Среда выполнения отменяет кадры B и C.
Дисплеи переменной частоты обновления
Это требование для отображения переменной частоты обновления, что разрыв включен. Метод CheckFeatureSupport можно использовать, чтобы определить, доступна ли эта функция, а для задания требуемых флагов — описания DXGI_PRESENT_ALLOW_TEARING и DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING и отображения переменной частоты обновления.Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | dxgi.h |
Библиотека | DXGI.lib |