структура D3DPRESENT_PARAMETERS

Описывает параметры презентации.

Синтаксис

typedef struct D3DPRESENT_PARAMETERS {
  UINT                BackBufferWidth;
  UINT                BackBufferHeight;
  D3DFORMAT           BackBufferFormat;
  UINT                BackBufferCount;
  D3DMULTISAMPLE_TYPE MultiSampleType;
  DWORD               MultiSampleQuality;
  D3DSWAPEFFECT       SwapEffect;
  HWND                hDeviceWindow;
  BOOL                Windowed;
  BOOL                EnableAutoDepthStencil;
  D3DFORMAT           AutoDepthStencilFormat;
  DWORD               Flags;
  UINT                FullScreen_RefreshRateInHz;
  UINT                PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;

Члены

BackBufferWidth

Тип: UINT

Ширина задних буферов новой цепочки буферов в пикселях. Если параметр Windowed имеет значение FALSE (презентация является полноэкранным), это значение должно равняться ширине одного из перечисленных режимов отображения, найденных с помощью EnumAdapterModes. Если значение Windowed имеет значение TRUE , а значение BackBufferWidth или BackBufferHeight равно нулю, то принимается соответствующее измерение клиентской области hDeviceWindow (или окно фокуса, если hDeviceWindow имеет значение NULL).

BackBufferHeight

Тип: UINT

Высота задних буферов новой цепочки буферов в пикселях. Если windowed имеет значение FALSE (презентация является полноэкранной), это значение должно равняться высоте одного из перечисленных режимов отображения, найденных с помощью EnumAdapterModes. Если значение Windowed имеет значение TRUE , а значение BackBufferWidth или BackBufferHeight равно нулю, то принимается соответствующее измерение клиентской области hDeviceWindow (или окно фокуса, если hDeviceWindow имеет значение NULL).

BackBufferFormat

Тип: D3DFORMAT

Формат обратного буфера. Дополнительные сведения о форматах см. в разделе D3DFORMAT. Это значение должно быть одним из форматов целевых объектов отрисовки, проверенных методом CheckDeviceType. Для получения текущего формата можно использовать GetDisplayMode .

На самом деле D3DFMT_UNKNOWN можно указать для BackBufferFormat в режиме окон. Это указывает среде выполнения использовать текущий формат режима отображения и устраняет необходимость вызова GetDisplayMode.

Для оконных приложений формат обратного буфера больше не должен соответствовать формату режима отображения, так как преобразование цвета теперь может выполняться оборудованием (если оборудование поддерживает преобразование цвета). Набор возможных форматов обратного буфера ограничен, но среда выполнения позволит представить любой допустимый формат буфера обратно в любом формате рабочего стола. (Существует дополнительное требование, чтобы устройство работало на рабочем столе. Устройства обычно не работают в режиме 8 бит на пиксель.)

Полноэкранные приложения не могут выполнять преобразование цвета.

BackBufferCount

Тип: UINT

Это значение может быть от 0 до D3DPRESENT_BACK_BUFFERS_MAX (или D3DPRESENT_BACK_BUFFERS_MAX_EX при использовании Direct3D 9Ex). Значения 0 обрабатываются как 1. Если не удается создать число задних буферов, среда выполнения завершит вызов метода и заполнит это значение количеством буферов назад, которые можно создать. В результате приложение может дважды вызвать метод с одной и той же D3DPRESENT_PARAMETERS структурой и ожидать, что он будет работать во второй раз.

Метод завершается ошибкой, если не удается создать один задний буфер. Значение BackBufferCount влияет на допустимый набор эффектов переключения. В частности, для любого эффекта переключения D3DSWAPEFFECT_COPY требуется ровно один задний буфер.

MultiSampleType

Тип: D3DMULTISAMPLE_TYPE

Член перечисленного типа D3DMULTISAMPLE_TYPE . Значение должно быть D3DMULTISAMPLE_NONE, если параметру SwapEffect не присвоено значение D3DSWAPEFFECT_DISCARD. Multisampling поддерживается только в том случае, если эффект переключения D3DSWAPEFFECT_DISCARD.

MultiSampleQuality

Тип: DWORD

Уровень качества. Допустимый диапазон от нуля до одного меньше, чем уровень, возвращаемый pQualityLevels, используемый CheckDeviceMultiSampleType. Передача большего значения возвращает D3DERR_INVALIDCALL ошибки. Парные значения целевых объектов отрисовки или поверхностей трафарета глубины и D3DMULTISAMPLE_TYPE должны совпадать.

SwapEffect

Тип: D3DSWAPEFFECT

Член перечисленного типа D3DSWAPEFFECT . Среда выполнения гарантирует подразумеваемую семантику, касающуюся поведения буферного переключения; Поэтому, если параметру Windowed присвоено значение TRUE , а свойству SwapEffect присвоено значение D3DSWAPEFFECT_FLIP, среда выполнения создаст один дополнительный задний буфер и скопирует тот, который станет передним буфером во время презентации.

D3DSWAPEFFECT_COPY требует, чтобы значение BackBufferCount было равным 1.

D3DSWAPEFFECT_DISCARD будет применяться в среде выполнения отладки путем заполнения любого буфера шумом после его представления.

Различия между Direct3D9 и Direct3D9Ex:

  • В Direct3D9Ex добавляется D3DSWAPEFFECT_FLIPEX, чтобы указать, когда приложение принимает режим пролистывания. То есть кадр приложения передается в режиме окна (а не копируется) в диспетчер окон рабочего стола (DWM) для композиции. Режим flip обеспечивает более эффективную пропускную способность памяти и позволяет приложению воспользоваться преимуществами полноэкранной статистики. Это не изменяет поведение в полноэкранном режиме. Режим перелистывания доступен начиная с Windows 7.

 

hDeviceWindow

Тип: HWND

Окно устройства определяет расположение и размер заднего буфера на экране. Используется Direct3D, когда содержимое заднего буфера копируется в передний буфер во время показа.

  • Для полноэкранного приложения это дескриптор верхнего окна (которое является окном фокуса).

    Для приложений, использующих несколько полноэкранных устройств (например, многомониторную систему), только одно устройство может использовать окно фокуса в качестве окна устройства. Все остальные устройства должны иметь уникальные окна устройств.

  • Для приложения в оконном режиме этот дескриптор будет целевым окном по умолчанию для Present. Если этот дескриптор имеет значение NULL, будет занято окно фокуса.

Обратите внимание, что среда выполнения не пытается отразить изменения в размере окна пользователем. Задний буфер не сбрасывается неявно при сбросе этого окна. Однако метод Present автоматически отслеживает изменения положения окна.

Оконный

Тип: BOOL

ЗНАЧЕНИЕ TRUE , если приложение выполняется в окне; False , если приложение работает в полноэкранном режиме.

EnableAutoDepthStencil

Тип: BOOL

Если это значение равно TRUE, Direct3D будет управлять буферами глубины для приложения. Устройство создаст буфер трафарета глубины при его создании. Буфер трафарета глубины будет автоматически задан в качестве целевого объекта отрисовки устройства. При сбросе устройства буфер трафарета глубины будет автоматически уничтожен и повторно создан в новом размере.

Если параметр EnableAutoDepthStencil имеет значение TRUE, параметр AutoDepthStencilFormat должен иметь допустимый формат трафарета глубины.

AutoDepthStencilFormat

Тип: D3DFORMAT

Член перечисленного типа D3DFORMAT . Формат автоматической поверхности трафарета глубины, создаваемой устройством. Этот элемент игнорируется, если только параметр EnableAutoDepthStencil не имеет значение TRUE.

Flags

Тип: DWORD

Одна из констант D3DPRESENTFLAG .

FullScreen_RefreshRateInHz

Тип: UINT

Скорость, с которой видеоадаптер обновляет экран. Значение зависит от режима, в котором выполняется приложение:

  • Для оконного режима частота обновления должна быть 0.
  • Для полноэкранного режима частота обновления является одной из частот обновления, возвращаемых EnumAdapterModes.

PresentationInterval

Тип: UINT

Максимальная скорость представления задних буферов цепочки буферов переднему буферу. Подробное описание поддерживаемых режимов и интервалов см. в разделе D3DPRESENT.

Требования

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

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

Структуры Direct3D

CreateDevice

CreateAdditionalSwapChain

Настоящее время

Reset