Метод IDirect3D9::CreateDevice (d3d9.h)
Создает устройство, представляющее видеоадаптер.
Синтаксис
HRESULT CreateDevice(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] HWND hFocusWindow,
[in] DWORD BehaviorFlags,
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[out, retval] IDirect3DDevice9 **ppReturnedDeviceInterface
);
Параметры
[in] Adapter
Тип: UINT
Порядковый номер, обозначающий видеоадаптер. D3DADAPTER_DEFAULT всегда является основным видеоадаптером.
[in] DeviceType
Тип: D3DDEVTYPE
Член перечисленного типа D3DDEVTYPE , обозначающий требуемый тип устройства. Если нужный тип устройства недоступен, метод завершится ошибкой.
[in] hFocusWindow
Тип: HWND
Окно фокуса оповещает Direct3D, когда приложение переключается из режима переднего плана в фоновый режим. См. заметки.
- Для полноэкранного режима указанное окно должно быть окном верхнего уровня.
- Для оконного режима этот параметр может иметь значение NULL , только если члену hDeviceWindow pPresentationParameters присвоено допустимое значение, отличное от NULL .
[in] BehaviorFlags
Тип: DWORD
Сочетание одного или нескольких параметров, управляющих созданием устройства. Дополнительные сведения см. в разделе D3DCREATE.
[in, out] pPresentationParameters
Тип: D3DPRESENT_PARAMETERS*
Указатель на структуру D3DPRESENT_PARAMETERS , описывающую параметры презентации для создаваемого устройства. Если BehaviorFlags указывает D3DCREATE_ADAPTERGROUP_DEVICE, pPresentationParameters является массивом. Независимо от количества существующих голов, автоматически создается только одна поверхность глубины или трафарета.
Для Windows 2000 и Windows XP частота обновления полноэкранного дисплея устройства задается в следующем порядке:
- Указанный пользователем ненулевой раздел реестра ForcedRefreshRate, если он поддерживается устройством.
- Указанное приложением ненулевое значение частоты обновления в параметре презентации.
- Частота обновления последней версии рабочего стола, если она поддерживается устройством.
- 75 герц, если устройство поддерживает.
- 60 герц, если поддерживается устройством.
- Устройство по умолчанию.
pPresentationParameters является входным и выходным параметром. Вызов этого метода может изменить несколько элементов, в том числе:
- Если BackBufferCount, BackBufferWidth и BackBufferHeight имеют значение 0 перед вызовом метода, они будут изменены при возврате метода.
- Если BackBufferFormat равно D3DFMT_UNKNOWN перед вызовом метода, он будет изменен при возврате метода.
[out, retval] ppReturnedDeviceInterface
Тип: IDirect3DDevice9**
Адрес указателя на возвращенный интерфейс IDirect3Device9 , представляющий созданное устройство.
Возвращаемое значение
Тип: HRESULT
Если метод выполнен успешно, возвращаемое значение будет D3D_OK. В случае сбоя метода возвращается одно из следующих значений: D3DERR_DEVICELOST, D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE D3DERR_OUTOFVIDEOMEMORY.
Комментарии
Этот метод возвращает полностью рабочий интерфейс устройства, заданный в требуемом режиме отображения (или в оконном режиме) и выделенный с соответствующими задними буферами. Чтобы начать отрисовку, приложению достаточно создать и задать буфер глубины (при условии, что в D3DPRESENT_PARAMETERS параметр EnableAutoDepthStencil имеет значение FALSE).
При создании устройства Direct3D вы предоставляете два разных параметра окна: окно фокуса (hFocusWindow) и окно устройства (hDeviceWindow в D3DPRESENT_PARAMETERS). Назначение каждого окна:
- Окно фокуса оповещает Direct3D, когда приложение переключается из режима переднего плана в фоновый режим (с помощью alt-tab, щелчка мышью или другого метода). Каждое устройство, созданное приложением, совместно используется одним окном фокуса.
- Окно устройства определяет расположение и размер заднего буфера на экране. Это используется Direct3D, когда содержимое заднего буфера копируется в передний буфер во время представления.
Обратите внимание, что D3DCREATE_HARDWARE_VERTEXPROCESSING, D3DCREATE_MIXED_VERTEXPROCESSING и D3DCREATE_SOFTWARE_VERTEXPROCESSING являются взаимоисключающими флагами, и при вызове этого метода необходимо указать по крайней мере один из этих флагов обработки вершин.
Задние буферы, созданные как часть устройства, блокируются только в том случае, если D3DPRESENTFLAG_LOCKABLE_BACKBUFFER указан в параметрах презентации. (Буферы с несколькими выборками и поверхности глубины никогда не блокируются.)
Методы Reset, IUnknown и TestCooperativeLevel должны вызываться из того же потока, который использовал этот метод для создания устройства.
D3DFMT_UNKNOWN можно указать для формата обратного буфера оконного режима при вызове CreateDevice, Reset и CreateAdditionalSwapChain. Это означает, что приложению не нужно запрашивать текущий формат рабочего стола перед вызовом CreateDevice для оконного режима. Для полноэкранного режима необходимо указать формат заднего буфера.
При попытке создать устройство в окне 0x0 размера createDevice завершится ошибкой .
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d9.h (включая D3D9.h) |
Библиотека | D3D9.lib |