Метод IDirect3DDevice9Ex::ResetEx (d3d9.h)
Сбрасывает тип, размер и формат цепочки буферов с сохранением всех остальных поверхностей.
Синтаксис
HRESULT ResetEx(
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[in, out] D3DDISPLAYMODEEX *pFullscreenDisplayMode
);
Параметры
[in, out] pPresentationParameters
Тип: D3DPRESENT_PARAMETERS*
Указатель на структуру D3DPRESENT_PARAMETERS , описывающую новые параметры презентации. Это значение не может иметь значение NULL.
При переключении в полноэкранный режим Direct3D попытается найти формат рабочего стола, соответствующий формату заднего буфера, чтобы форматы буфера обратного и переднего буфера были идентичными (чтобы исключить необходимость преобразования цвета).
Когда этот метод возвращает следующее:
- BackBufferCount, BackBufferWidth и BackBufferHeight имеют нулевое значение.
- BackBufferFormat имеет значение D3DFORMAT только для оконного режима; В полноэкранном режиме должен быть указан формат.
[in, out] pFullscreenDisplayMode
Тип: D3DDISPLAYMODEEX*
Указатель на структуру D3DDISPLAYMODEEX , описывающую свойства требуемого режима отображения. Это значение должно быть указано для полноэкранных приложений, но может иметь значение NULL для оконных приложений.
Возвращаемое значение
Тип: HRESULT
Метод может возвращать: D3D_OK, D3DERR_DEVICELOST или D3DERR_DEVICEHUNG (см. раздел D3DERR).
Если этот метод возвращает D3DERR_DEVICELOST или D3DERR_DEVICEHUNG приложение может вызывать только IDirect3DDeviceEx::ResetEx, IDirect3Device9Ex::CheckDeviceState или освободить указатель интерфейса; Любой другой вызов API вызовет исключение.
Комментарии
Если вызов IDirect3Device9Ex::ResetEx завершается сбоем, устройство будет помещено в состояние потери (на что указывает возвращаемое значение D3DERR_DEVICELOST из вызова IDirect3Device9Ex::CheckDeviceState). Дополнительные сведения об использовании IDirect3Device9Ex::CheckDeviceState и Изменения поведения потерянного устройства см. в статье Об использовании IDirect3Device9Ex::ResetEx в контексте потерянных устройств.
В отличие от предыдущих версий DirectX, вызов IDirect3Device9Ex::ResetEx не приводит к потере поверхностей, текстур или сведений о состоянии.
Пиксельные шейдеры и вершинные шейдеры сохраняют вызовы IDirect3DDevice9Ex::ResetEx для Direct3D 9. Приложение не должно создавать их явным образом.
Существует два разных типа цепочек буферов: полноэкранные или оконные. Если новая цепочка буферов является полноэкранной, адаптер будет помещен в режим отображения, соответствующий новому размеру.
Приложения могут ожидать отправки им сообщений во время этого вызова (например, до возврата этого вызова); Приложения должны принять меры предосторожности, чтобы не вызывать Direct3D в настоящее время.
Вызов IDirect3DDevice9Ex::ResetEx завершится ошибкой при вызове в потоке, отличном от потока, используемого для создания сбрасываемого устройства.
D3DFMT_UNKNOWN можно указать для обратного буфера оконного режима при вызове IDirect3D9Ex::CreateDeviceEx, IDirect3Device9Ex::ResetEx и IDirect3DDevice9::CreateAdditionalSwapChain. Это означает, что приложению не нужно запрашивать текущий формат рабочего стола перед вызовом IDirect3D9Ex::CreateDeviceEx для оконного режима. Для полноэкранного режима необходимо указать формат заднего буфера. Если задать значение BackBufferCount равным нулю (BackBufferCount = 0), то это приведет к созданию одного обратного буфера.
При попытке сброса нескольких видеоадаптеров в группе задайте pPresentationParameters так, чтобы они указывали на массив D3DPRESENT_PARAMETERS структур, по одному для каждого дисплея в группе адаптеров.
Если устройство с несколькими головками было создано с D3DCREATE_ADAPTERGROUP_DEVICE, IDirect3DeviceEx::ResetEx требует массив D3DPRESENT_PARAMETERS структур, в которых каждая структура должна указывать полноэкранный дисплей. Чтобы вернуться в оконный режим, приложение должно уничтожить устройство и повторно создать устройство без поддержки нескольких головок в оконном режиме.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d9.h |
Библиотека | D3D9.lib |