2010-09-15 88 views
0

嘿傢伙,謝謝你的期待。我已經從MSDN構建了簡單的D2D應用程序,可用here。現在,我想繪製一些基元並添加一個fps計數器。如何在簡單的Direct2D應用程序中計算fps?

我有一個OnRender()事件,我畫矩形等等。我也調用RenderTextInfo(),在那裏我調用RenderTarget-> DrawText。我在哪裏添加計算每秒幀數的邏輯?

非常感謝。

回答

1

我不知道確切的Direct2D東西,但這可能有所幫助。

基本上,你有兩種選擇。您可以在繪製框架時更新幀速率,或者每秒(或任何其他時間間隔)更新幀速率。

如果您在繪製一個框架時對其進行計數,則可以簡單地獲取當前繪製框架的時間,並從中減去繪製最後一個框架的時間。這可以讓你花費時間繪製這個框架。那個(即1/x)的倒數就是幀率。

如果您按照固定的時間間隔進行計數,則需要在每個時間間隔都有一些事件觸發,以檢查自上次觸發事件以來繪製了多少幀。除以你的間隔(如果是一秒鐘,當然不需要分割),這就是你的fps數。每次畫一個框架時都不要忘記增加一些計數器。

+0

感謝Martinho,這對我有很大的幫助。我正在查看time.h中的函數以獲得我想要的內容。不幸的是,我發現了另一個問題 - 一旦原始圖元被繪製,屏幕就不會重繪任何東西。我會在此發佈另一個問題。 – Freakishly 2010-09-16 17:57:43

+0

好吧,我用1/x邏輯來計算幀率,它工作。謝謝,Martinho:D – Freakishly 2010-09-17 20:34:13

+0

我認爲它沒有涵蓋D2D以異步方式工作的事實,並且您不知道render()調用何時完成。 – Lothar 2012-02-11 08:07:22