C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 11 - Описание структуры D3DPRESENT_PARAMETERS / Справка по DirectX / Microsoft DirectX

Шаг 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, или в следующие флажки:

  • D3DPRESENTFLAG_LOCKABLE_BACKBUFFER - устанавливаем флаг, если приложение требует непосредственный режим работы с задним буфером. Обратите внимание, задние буфера имеют доступ, если приложение имеет D3DPRESENTFLAG_LOCKABLE_BACKBUFFER, когда использует функцию IDirect3D8::CreateDevice или IDirect3DDevice8::Reset.

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

  • D3DPRESENT_RATE_DEFAULT - ставит по умолчанию, или текущему обновлению отображения окна.
  • D3DPRESENT_RATE_UNLIMITED - ставит быстрый рефреш, которое позволяет железо.

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

  • D3DPRESENT_INTERVAL_IMMEDIATE - позволяет действовать немедленно. Драйвер не ждет возврата вертикального луча синхронизации.
  • D3DPRESENT_INTERVAL_ONE - драйвер ждет возврата вертикального луча синхронизации. Т.е. обновление происходит не быстрее чем обновление экрана.
  • D3DPRESENT_INTERVAL_TWO - драйвер ждет возврата вертикального луча синхронизации. Т.е. обновление происходит в два раза медленнее, чем обновление экрана.
  • D3DPRESENT_INTERVAL_THREE - драйвер ждет возврата вертикального луча синхронизации. Т.е. обновление происходит в три раза медленнее, чем обновление экрана.
  • D3DPRESENT_INTERVAL_FOUR - драйвер ждет возврата вертикального луча синхронизации. Т.е. обновление происходит в четыер раза медленнее, чем обновление экрана.

Требования

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

Примеры

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


| |
Автор Хавов Евгений Валерьевич.
[AD]