許多時候,需要處理設備丟失問題,而通常情況下,RESET會因為一些小問題而導致失敗,下面我就把gamedev上的一貼子翻譯一下,只翻譯中間那小段
摘自:
http://www.gamedev.net/community/forums/topic.asp?topic_id=146731
1) One of the parameters you pass is probably not possible on the hardware, e.g. a depth buffer format which won't work with the back buffer format.
你傳入的D3DPRESENT_PARAMETERS和你的硬件不符,可能是深度格式與你的后臺緩沖格式不匹配。通常情況下我們是將先前的D3DPRESENT_PARAMETERS保存,RESET的時候傳入,若是這種情況,則不必擔心這個問題
2) The debug D3D runtime will tell you exactly "why":
把DirectX Control Pannel中的Direct3D開為調試模式,運行過后,編譯器的信息提示框里會輸出原因,多半是因為位于D3DPOOL_DEFAULT中的內容未釋放完而導致的
a. When you install the DirectX SDK you get the option to install the debug or retail runtime, if you're developing software, always choose debug.
安裝SDK的時候,你可以選則是調式還是運行模式,如果你是軟件開發,通常選擇為調式
b. Go to the control panel and open the DirectX applet.
到SDK中把DirectX Control Pannel小程序打開
c. Go to the Direct3D tab and put the "debug output level" slider to maximum.
把DirectX Control Pannel中的Direct3D開為調試模式
d. Run your application in the debugger (if using MSVC, press F5) and repeat whatever process causes it to fail.
在調試狀態下運行你的程序,重復處理導致你出錯的地方
e. Once it fails, close the app if necessary and return to MSVC, now look in the "output" pane (usually at the bottom). D3D will tell you about everything noteworthy, from information about its DLL being attached to your application, to warnings about things which may harm performance to the full reason why it gave an error.
如果發現失敗了,就關掉調試,在輸出信息面板中D3D將會告訴你是什么原因導致你失敗的。
f. If your application creates its D3D device in PURE mode, creating it in non-PURE mode should enable more checking and reporting.
如果你的程序創建的時候的D3D設備是PURE模式,那在創建的時候改為非PURE模式,這樣你在上面的控制面板中得到的信息會更多。