- HRESULT hr = m_pD3DDevice->TestCooperativeLevel ();
- // c девайсом пока ничего не случилось
- if ( false == m_bDeviceLost )
- {
- if ( hr == D3DERR_DEVICELOST )
- { // произошли проблемы
- m_bDeviceLost = true;
- OnLostDevice();
- }
- }
- // если девайс не сбросили надо его сбросить
- if ( hr == D3DERR_DEVICENOTRESET )
- {
- hr = m_pD3DDevice->Reset ( &m_d3dpp );
- if ( hr == D3D_OK )
- {
- OnResetDevice();
- // девайс в порядке
- m_bDeviceLost = false;
- }
- else
- if ( hr == D3DERR_DEVICELOST )
- {
- // произошли проблемы
- m_bDeviceLost = true;
- OnLostDevice();
- }
- }
Этот код достаточно вставить перед вызовом BeginScene для девайса.
OnLostDevice - релизим все ресурсы которые с типом D3DPOOL_DEFAULT,
OnResetDevice - аналогично пересоздаем все ресурсы с типом D3DPOOL_DEFAULT, для всех ID3DX интерфейсов вызываем соответствующие методы.
Если у вас происходит ресайз окна достаточно вызвать последовательность методов
OnLostDevice, затем Reset девайсу, OnResetDevice.
Mожно вставить проверки на возвращаемые значения для BeginScene (), EndScene (), Present ().
www.epicreal.com