2008年8月3日 星期日

Graphic Debugger ( Part VI )

pix_user_event1

這是PIX中,抓取單一Frame資料所得到的Events。一個Frame中的D3D API呼叫非常多,我只是用一個D3D的範例程式,就已經上千個事件了,如果是遊戲程式的話,用上萬個事件起跳來算,應該不過份。

那麼問題就在於,我們怎麼去找到想要看的事件?

Direct3D提供一組API,可以在PIX中對抓取的資料做一些記號。例如說,我們可以利用D3DPERF_BeginEvent, D3DPERF_EndEvent這兩個API函式來設定User Event。

我們在程式碼裡頭先做這樣的修改,

D3DPERF_BeginEvent(0xffffff00,L"Begin Render Text & UI");
RenderText();
g_HUD.OnRender( fElapsedTime );
g_SampleUI.OnRender( fElapsedTime );
D3DPERF_EndEvent();

在RenderText()之前,先呼叫Begine Event,UI Render之後,呼叫End Event。這樣一來,我們在抓取單一Frame的資料的時候,就會得到User Event。

pix_user_event_2

User Event後面的字串,是我們在Begin Event中所給予的參數字串。Events圖表的上方有一個Find Event的按鈕,我們可以利用來找到我們自己定義的Event。

沒有留言: