2008年7月24日 星期四

Graphic Debugger ( Part IV )

我們開始看"A single-frame capture of Direct3D whenever F12 is pressed"所得到的結果。請先回頭看這篇文章


Objects View顯示的是系統內的物件資料,包括物件的位址、格式、大小、型態等等。舉例來說,在這個圖表裡,我們可以看到D3D 貼圖物件所使用記憶體的容量、Pixel格式、寬、高等等的資料。
圖表的最上方有一排下拉式Filter選單,可以將列出的物件過濾。例如,在Type選單選擇D3D 貼圖物件,圖表中列出的就只剩貼圖物件。



Events View中,會顯示所有抓下來的D3D API呼叫,同時提供了呼叫的參數,如果參數是某個D3D物件的話,就會顯示物件的位址。在位址上按下滑鼠右鍵,就可以把這個物件的詳細內容顯示在右邊的Details View中。

Details 顯示的內容,跟物件的型態有關,各式各樣我們需要的資訊,都會鉅細靡遺的顯示出來。

現在,我們先來玩Depth-Stencil Buffer。
第一步當然是跑一個D3D程式,抓一個Frame的資料顯示在PIX中。
接著,在Objects View裡面,用"Usage" Filter將Depth-Stencil Buffer取出來。
在這個D3D 物件上用滑鼠右鍵點選,就會出現類似這樣的Pop-up選單,

選擇這第一個也是唯一一個可選的項目,Depth-Stencil Surface的內容就會顯示在Details View裡面了。

Depth數值,是用白色到黑色的灰階值,來表示0.0 ~ 1.0,紅色框框標記的地方,可以讓我們調整邊界數值,上面這張圖,是我將0.95以下的數值都調整成白色得到的結果。

左下的Events View跟Details View可以合併一起來看,我們在Events裡面選擇一個一個的Events,可以看見當時的Depth Surface內容,換句話說,我們可以對Depth Surface做Tracing!!

其他的各種D3D物件,使用方式都類似,只是在Details裡面的內容不同。

下一回,我們來介紹一下也很好玩的Pixel History。

沒有留言: