структура 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.
Требования
Требование | Значение |
---|---|
Заголовок |
|
См. также раздел