Шаг 11 - Описание структуры D3DPRESENT_PARAMETERS

Ниже описаны параметры отображения экрана.

typedef struct _D3DPRESENT_PARAMETERS_ {
	UINT BackBufferWidth;
	UINT BackBufferHeight;
	D3DFORMAT BackBufferFormat;
	UINT BackBufferCount;

	D3DMULTISAMPLE_TYPE MultiSampleType;

	D3DSWAPEFFECT SwapEffect;
	HWND hDeviceWindow;
	BOOL Windowed;
	BOOL EnableAutoDepthStencil;
	D3DFORMAT AutoDepthStencilFormat;
	DWORD Flags;

	UINT FullScreen_RefreshRateInHz;
	UINT FullScreen_PresentationInterval;
} D3DPRESENT_PARAMETERS;

Описание параметров

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

BackBufferFormat - это член структуры D3DFORMAT. Это значение одно из форматов визуализации, которое утверждается при помощи IDirect3D8::CheckDeviceType.

Если установлен флажок Windowed в TRUE, тогда BackBufferFormat устанавливается по умолчанию текущего режима отображения. Для этого используйте функцию IDirect3DDevice8::GetDisplayMode, чтобы получить текущий формат.

BackBufferCount - к нему можно присваивать значения 0, 1, 2 или 3. Обратите внимание, что 0, это тоже что и 1. Если число задних буферов не были созданы, то метод времени терпит неудачу, метод вызывает и заполняет номер заднего буфера, который можно создать. В результате приложение может обратиться и второй раз к структуре D3DPRESENT_PARAMETERS, чтобы заработать.

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

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

SwapEffect - член структуры D3DSWAPEFFECT. Если флажок Windowed установлен в TRUE и SwapEffect установлен в D3DSWAPEFFECT_FLIP, тогда добавится один дополнительный задний буфер и не будет отображаться, пока активен первичный буфер.

D3DSWAPEFFECT_COPY и D3DSWAPEFFECT_COPY_VSYNC требует установить значение BackBufferCount в 1.

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

hDeviceWindow - если полноэкранный, то поверхность закрыта полностью. Если оконный режим, это будет окном по умолчанию для IDirect3DDevice8::Present. Если значение равно NULL, фокус окна будет взят. Для такого приложения используется несколько полноэкранных устройств, типа системы мультимониторинга, одно устройство всегда использует один фокус окна. Все другие устройства должны иметь уникальные устройства окон. Иначе, поведение будет непредсказуемо и не будет работать должным образом.

Windowed - Равен TRUE, если приложение запущено в оконном режиме. FALSE - если приложение является полноэкранным.

EnableAutoDepthStencil - если значение TRUE, то Microsoft Direct3D может управлять буфером глубины. Устройство может создать трафарет буфера глубины. Трафарет буфера глубины автоматически устанавливается на устройство визуализации. Когда устройство сбрасывается, трафарет буфера глубины автоматически уничтожается и создается новый размер.

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

AutoDepthStencilFormat - может принимать значения из структуры D3DFORMAT. Создает формат поверхности трафарета глубины. Он устанавливается если только параметр EnableAutoDepthStencil установлен в TRUE.

Flags - он может быть установлен в 0, или в следующие флажки:

FullScreen_RefreshRateInHz - число, по которому адаптер обновляет экран. Для оконного режима это значение должно быть 0. Иначе, это значение должен возвращать IDirect3D8::EnumAdapterModes или одно из следующих значений:

FullScreen_PresentationInterval - максимальная частота обмена, по которому задние буфера могут быть представлены. Для оконного режима это значение можно установить в D3DPRESENT_INTERVAL_DEFAULT(0). Для полноэкранного устанавливается в D3DPRESENT_INTERVAL_DEFAULT или значение может равняться одному из ниже описанных флажков входящих в структуру D3DCAPS8:

Требования

Заголовки: объявить D3d8types.h.

Примеры

См. "Шаг 2 - Создание Direct3D в оконном режиме".


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Хавов Евгений Валерьевич - 12.08.2002 (обновлено 25.08.2002)