вторник, 6 января 2009 г.

Восстановление устройства в DirectX

Немного кода...

  1. HRESULT hr = m_pD3DDevice->TestCooperativeLevel ();    
  2.    
  3. // c девайсом пока ничего не случилось   
  4. if ( false == m_bDeviceLost )   
  5. {   
  6.         if ( hr == D3DERR_DEVICELOST )   
  7.         {       // произошли проблемы   
  8.                 m_bDeviceLost = true;   
  9.    
  10.                 OnLostDevice();     
  11.         }   
  12. }   
  13.    
  14. // если девайс не сбросили надо его сбросить    
  15. if ( hr == D3DERR_DEVICENOTRESET )         
  16. {   
  17.         hr = m_pD3DDevice->Reset ( &m_d3dpp );     
  18.    
  19.         if ( hr == D3D_OK )   
  20.         {   
  21.                 OnResetDevice();           
  22.    
  23.                 // девайс в порядке   
  24.                 m_bDeviceLost = false;   
  25.         }   
  26.         else   
  27.                 if ( hr == D3DERR_DEVICELOST )    
  28.                 {   
  29.                         // произошли проблемы   
  30.                         m_bDeviceLost = true;      
  31.    
  32.                         OnLostDevice();   
  33.                 }   
  34. }  


Этот код достаточно вставить перед вызовом BeginScene для девайса.

OnLostDevice - релизим все ресурсы которые с типом D3DPOOL_DEFAULT,
OnResetDevice - аналогично пересоздаем все ресурсы с типом D3DPOOL_DEFAULT, для всех ID3DX интерфейсов вызываем соответствующие методы.

Если у вас происходит ресайз окна достаточно вызвать последовательность методов
OnLostDevice, затем Reset девайсу, OnResetDevice.

Mожно вставить проверки на возвращаемые значения для BeginScene (), EndScene (), Present ().

www.epicreal.com

понедельник, 5 января 2009 г.

"Open source" от microsoft

В последнее время озаботился тулзами и всякими либами для .NET (бесплатные и желательно с открытыми сорцами). Вот те на http://www.codeplex.com/ - чудо сайт "CodePlex is Microsoft's open source project hosting web site. Start a new project, join an existing one, or download software created by the community." - описание с сайта подняло настроение.

http://www.codeplex.com/ScintillaNET ( контрольчик для подсветки синтаксиса, для тех кто из тундры или с другой планеты ) - эта тулза так вапще находка для токаря. Ковыряние с исходниками и написание своего маленького теста (посветка кода lua, xml), мое настроение улетело в горы ! Все работает как часики.