2011-11-24 84 views
2

使用斷點,我試圖找出使用DirectX緩衝區的複雜應用程序的工作。
我看到Blt命令繪製到後臺緩衝區/表面的很多地方,我需要知道它在代碼中的那一點上是如何繪製的。可以在繪製時查看後臺緩衝區嗎?

不幸的是,我只能看到當繪製整個幀並且緩衝區被翻轉時繪製了什麼。

沒有辦法在繪製時看到後臺緩衝區/表面嗎?它翻轉之前?

回答

6

您可以使用PIX for Windows來調試GPU中的渲染問題或性能瓶頸。 PIX是一個分析器,可以爲您提供非常詳細的信息,說明渲染過程中每一步發生的情況。

因此,它將允許您查看每個Direct3D調用在後臺緩衝區中呈現的內容。您還可以選擇最終圖像中的給定像素,並查看該像素的歷史記錄中發生了什麼(例如,應用了着色器)。

這裏有幾個教程:

http://blogs.msdn.com/b/manders/archive/2006/12/15/a-painless-introduction-to-pix-for-windows.aspx

http://www.garagegames.com/community/blogs/view/14251

http://www.youtube.com/watch?v=-3PISvNTeB0&feature=player_embedded

+0

使用PIX嘗試,但它等待我的應用程序退出,然後才顯示了異形信息(couldn也沒有找到backbuffer信息)。我的應用程序運行時無法查看後臺緩衝區嗎? (無法通過YouTube服務器上的youtube視頻因爲youtube被阻止) – Nav

+0

hey Nav。 PIX將在執行時測量您的應用程序,並在最後向您顯示配置文件信息。由於信息太多,它無法向您顯示實時發生的信息。您可以選擇僅使用F12捕捉幾幀。 – krolth

+0

順便說一句(在Direc3D中)默認情況下,每個繪圖調用(例如SetRenderState,SetVertexShader等)都發生在BackBuffer中。當您看到IDirect3DDevice9 :: Present函數調用時,它僅顯示在主框架中。因此,PIX向您顯示後臺緩衝區中發生的情況。 – krolth