Поделиться через


Метод IDirect3DDevice9::Reset (d3d9helper.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 d3d9helper.h (включая D3D9.h)
Библиотека D3D9.lib

См. также раздел

D3DPRESENT_PARAMETERS

D3DSWAPEFFECT

IDirect3DDevice9

IDirect3DDevice9::Present

Multihead (Direct3D 9)