瀏覽代碼

Examples: DirectX9: Handle loss of D3D9 device (D3DERR_DEVICELOST). (#1464)

omar 8 年之前
父節點
當前提交
e000ee0116
共有 1 個文件被更改,包括 9 次插入1 次删除
  1. 9 1
      examples/directx9_example/main.cpp

+ 9 - 1
examples/directx9_example/main.cpp

@@ -154,7 +154,15 @@ int main(int, char**)
             ImGui::Render();
             g_pd3dDevice->EndScene();
         }
-        g_pd3dDevice->Present(NULL, NULL, NULL, NULL);
+        HRESULT result = g_pd3dDevice->Present(NULL, NULL, NULL, NULL);
+
+        // Handle loss of D3D9 device
+        if (result == D3DERR_DEVICELOST && g_pd3dDevice->TestCooperativeLevel() == D3DERR_DEVICENOTRESET)
+        {
+            ImGui_ImplDX9_InvalidateDeviceObjects();
+            g_pd3dDevice->Reset(&g_d3dpp);
+            ImGui_ImplDX9_CreateDeviceObjects();
+        }
     }
 
     ImGui_ImplDX9_Shutdown();