Метод IDirect3DDevice9::Reset (d3d9.h)
Сбрасывает тип, размер и формат цепочки буферов.
Синтаксис
HRESULT Reset(
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters
);
Параметры
[in, out] pPresentationParameters
Тип: D3DPRESENT_PARAMETERS*
Указатель на структуру D3DPRESENT_PARAMETERS , описывающую новые параметры презентации. Это значение не может иметь значение NULL.
При переключении в полноэкранный режим Direct3D попытается найти формат рабочего стола, соответствующий формату заднего буфера, чтобы форматы буфера обратного и переднего буфера были идентичными (чтобы исключить необходимость преобразования цвета).
Когда этот метод возвращает следующее:
- BackBufferCount, BackBufferWidth и BackBufferHeight имеют нулевое значение.
- BackBufferFormat имеет значение D3DFMT_UNKNOWN только для оконного режима; В полноэкранном режиме должен быть указан формат.
Возвращаемое значение
Тип: HRESULT
Возможные возвращаемые значения: D3D_OK, D3DERR_DEVICELOST, D3DERR_DEVICEREMOVED, D3DERR_DRIVERINTERNALERROR или D3DERR_OUTOFVIDEOMEMORY (см. раздел D3DERR).
Комментарии
Если вызов IDirect3DDevice9::Reset завершается сбоем, устройство будет помещено в состояние "потеряно" (на что указывает возвращаемое значение D3DERR_DEVICELOST из вызова IDirect3Device9::TestCooperativeLevel), если оно не находится в состоянии "не сброс" (на что указывает возвращаемое значение D3DERR_DEVICENOTRESET из вызова IDirect3DDevice9::TestCooperativeLevel). Дополнительные сведения об использовании IDirect3DDevice9::TestCooperativeLevel и Lost Devices (Direct3D 9) см. в разделе IDirect3DDevice9::Reset в контексте потерянных устройств.
Вызов IDirect3DDevice9::Reset приводит к потере всех поверхностей памяти текстур, очистке управляемых текстур из видеопамяти и потере всех сведений о состоянии. Перед вызовом метода IDirect3DDevice9::Reset для устройства приложение должно освободить все явные целевые объекты отрисовки, поверхности трафаретов глубины, дополнительные цепочки буферов, блоки состояний и D3DPOOL_DEFAULT ресурсы, связанные с устройством.
Существует два разных типа цепочек буферов: полноэкранные или оконные. Если новая цепочка буферов является полноэкранной, адаптер будет помещен в режим отображения, соответствующий новому размеру.
Приложения Direct3D 9 могут ожидать отправки сообщений во время этого вызова (например, до возврата этого вызова); Приложения должны принять меры предосторожности, чтобы не вызывать Direct3D в настоящее время. Кроме того, при сбое IDirect3DDevice9::Reset можно вызвать только методы IDirect3DDevice9::Reset, IDirect3Device9::TestCooperativeLevel и различные функции-члены Release. Вызов любого другого метода может привести к возникновению исключения.
Вызов IDirect3DDevice9::Reset завершится ошибкой при вызове в потоке, отличном от потока, используемого для создания сбрасываемого устройства.
Пиксельные шейдеры и вершинные шейдеры сохраняют вызовы IDirect3DDevice9::Reset для Direct3D 9. Приложение не должно создавать их явным образом.
D3DFMT_UNKNOWN можно указать для обратного буфера оконного режима при вызове IDirect3D9::CreateDevice, IDirect3Device9::Reset и IDirect3DDevice9::CreateAdditionalSwapChain. Это означает, что приложению не нужно запрашивать текущий формат рабочего стола перед вызовом IDirect3D9::CreateDevice для оконного режима. Для полноэкранного режима необходимо указать формат заднего буфера. Если задать значение BackBufferCount равным нулю (BackBufferCount = 0), то это приведет к созданию одного обратного буфера.
При попытке сброса нескольких видеоадаптеров в группе задайте pPresentationParameters так, чтобы они указывали на массив D3DPRESENT_PARAMETERS структур, по одному для каждого дисплея в группе адаптеров.
Если устройство с несколькими головками было создано с D3DCREATE_ADAPTERGROUP_DEVICE, IDirect3DDevice9::Reset требует массив D3DPRESENT_PARAMETERS структур, в которых каждая структура должна указывать полноэкранный дисплей. Чтобы вернуться в оконный режим, приложение должно уничтожить устройство и повторно создать устройство без поддержки нескольких головок в оконном режиме.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d9.h (включая D3D9.h) |
Библиотека | D3D9.lib |