轉載–使用Pix For Windows調試Shader傻瓜教程

來源:互聯網
上載者:User

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以後內建的功能放大網頁即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.