這是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。
User Event後面的字串,是我們在Begin Event中所給予的參數字串。Events圖表的上方有一個Find Event的按鈕,我們可以利用來找到我們自己定義的Event。
沒有留言:
張貼留言