許多時候,需要處理設(shè)備丟失問題,而通常情況下,RESET會因為一些小問題而導(dǎo)致失敗,下面我就把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開為調(diào)試模式,運行過后,編譯器的信息提示框里會輸出原因,多半是因為位于D3DPOOL_DEFAULT中的內(nèi)容未釋放完而導(dǎo)致的
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的時候,你可以選則是調(diào)式還是運行模式,如果你是軟件開發(fā),通常選擇為調(diào)式
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開為調(diào)試模式
d. Run your application in the debugger (if using MSVC, press F5) and repeat whatever process causes it to fail.
在調(diào)試狀態(tài)下運行你的程序,重復(fù)處理導(dǎo)致你出錯的地方
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.
如果發(fā)現(xiàn)失敗了,就關(guān)掉調(diào)試,在輸出信息面板中D3D將會告訴你是什么原因?qū)е履闶〉摹?/div>
f. If your application creates its D3D device in PURE mode, creating it in non-PURE mode should enable more checking and reporting.
如果你的程序創(chuàng)建的時候的D3D設(shè)備是PURE模式,那在創(chuàng)建的時候改為非PURE模式,這樣你在上面的控制面板中得到的信息會更多。