Иногда во время рендеринга D3D9 ломается с ошибкой D3DERR_DEVICELOST. В DirectDraw могли лостаться сурфейсы, но там было просто - surface->IsLost() и восстановление если что. А с Direct3D9 все как-то сложнее. В интернетах на эту тему либо какой-то невнятный укуренный бред, либо многабукаф. Решается ли это как-то по-простому?
Все очень просто. Сам не позаботишся, никто за тебя не сделает. Даже D3DPOOL_MANAGED и D3DPOOL_DEFAULT не помогут на сто процентов.
Вроде не сложнее. В начале функции рендера: Код (Text): hr = p_d3d_Device->TestCooperativeLevel(); if(hr==D3DERR_DEVICELOST) return; if(hr==D3DERR_DEVICENOTRESET) { p_d3d_Device->Reset(&d3dpp); }
Booster Эээ, не понял? Так мне же нужно его назад вернуть если он lost. Что делать-то? Разелизить и заново создать чтоли?
Если потеряли устройство, то ничего не делаем, так как его кто-то отобрал. Если же устройство имеется, но не инициализировано, то делаем Reset.