http://hi.baidu.com/_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/6c5251d185c124d9572c84ae.html
下面,我們來介紹一下怎麼使用DX SDK內建的工具PIX For Windows來調試Shader。這裡只做簡要的介紹,具體的情參看PIX的文檔哈。如何找到文檔呢?開啟DX SDK開始菜單下面的DirectX Documentation for C++,我的版本是09年8月版本的,到目前為止好像是最新版,呵呵。然後依次:DirectX Software Development Kit/Tools/DirectX Performance Tools/PIX。
好了開始吧。首先,讓我們選擇一個例子吧,就用微軟內建的BasicHLSL這個Demo吧。首先呢,我們要用可調式Shader的方式編譯和連結我們的程式。對於這個Demo來說,就是簡單的把下面這兩句解注釋就OK了:
#define DEBUG_VS // Uncomment this line to debug vertex shaders
#define DEBUG_PS // Uncomment this line to debug pixel shaders
好了,現在我們應該會產生一個可執行檔了。我的這個可執行檔的地址是:E:\Documents\Visual Studio 2008\Projects\DirectXSamples\BasicHLSL\Debug\BasicHLSL.exe 記住它哦。
然後我們去開始菜單DXSDK下面開啟PIX for Windows.如果不出意外的話,你應該能看到這個介面:
好了,讓我們建立一個Experiment吧。方法是File>New Experiment(PS:Ctrl+N或者直接點工具列都可以)。然後你會看到下面一個介面:
如上所示,這樣選擇好,點Start Experiment就可以啟動應用程式了。
注意,由於開啟了Pixel Shader調試,因此會切換到參考裝置,所以會出現一個警告,且運行期間會很卡,但是,忍住吧,呵呵。造成這個的罪魁禍首在此:
// Debugging vertex shaders requires either REF or software vertex processing
// and debugging pixel shaders requires REF.
#ifdef DEBUG_VS
if( pDeviceSettings->d3d9.DeviceType != D3DDEVTYPE_REF )
{
pDeviceSettings->d3d9.BehaviorFlags &= ~D3DCREATE_HARDWARE_VERTEXPROCESSING;
pDeviceSettings->d3d9.BehaviorFlags &= ~D3DCREATE_PUREDEVICE;
pDeviceSettings->d3d9.BehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}
#endif
#ifdef DEBUG_PS
pDeviceSettings->d3d9.DeviceType = D3DDEVTYPE_REF;
#endif
當程式運行之後,讓我們在想調試的Frame按下F12鍵。(也可以是其它鍵,這取決於你的設定,你可以去上面那個介面的More Option裡修改。) 然後咱們就退出吧,同時也退出建立Experiment的嚮導對話方塊吧,然後出現了一個這個介面:
OK,這就是我們要分析的第六幀哦。在Detail視窗中選擇Render,事件中選擇Frame6.然後應該能看到這個介面:
接下來選擇一個我們要調試的像素,右鍵之後選Debug This Pixel。
看到左邊的連結了嗎?(如所示的Debug Vertex0等)點擊它們試試吧。
是不是很簡單呢?這是一個輕量級的工具不怎麼佔資源也挺好用的。
呵呵。Pixel也是同樣的道理哦:
我也是剛剛接觸到PIX,到處找資料都找不到,所以只好自己自學了,希望這一點點東西對大家能有協助。另外PIX是很強大的一個工具,它能做的不僅僅是這點,它還可以用來查Bug用來檢查效能消耗,起Nvidia PerfHUD的作用哦~~ 嚮導視窗下面的四個選項選第一個試試看~~
就此了,有其它好的方法和用法歡迎大家共用,謝謝。
PS:友情提示:看不清圖片的可以用IE7以後內建的功能放大網頁即可。