圖形像素歷史記錄
[圖形像素歷史記錄] 是 Visual Studio 中的圖形診斷工具之一,可幫助您了解在遊戲或應用程式的特定畫面格期間,Direct3D 事件對特定像素有何影響。
這是 [圖形像素歷史記錄] 視窗:
![]() |
---|
從 Visual Studio 2013 Update 3 開始,圖形診斷工具視窗皆裝載在 Visual Studio Shell 的獨立複本中。這個自訂殼層稱為「圖形分析」,它會消除不必要的功能表和選項,除此以外,像素歷史記錄和工作流程都和之前一樣。如需此變更的詳細資訊,請參閱 圖形診斷概觀。 |
了解像素歷史記錄
藉由使用 [圖形像素歷史記錄],您可以分析在特定畫面格期間,Direct3D 事件對呈現目標的特定像素有何影響。 您可以找出特定 Direct3D 事件的呈現問題,即使後續事件 (或相同事件中的後續基本項目) 繼續變更像素的最終色彩值也一樣。 例如,像素的呈現可能不正確,然後被另一個半透明的像素遮住,導致其色彩在畫面格緩衝區中混合在一起。 如果您只有呈現目標的最後內容可以引導您,這種問題會很難診斷。
[圖形像素歷史記錄] 視窗會顯示所選畫面格整個過程的完整像素歷史記錄。 視窗頂端的 [最終畫面格緩衝區] 會顯示寫入畫面格結尾之畫面格緩衝區的色彩,並附有像素的其他資訊,例如它來自哪個畫面格,以及其螢幕座標。 此區域也包含 [呈現 Alpha] 核取方塊。 選取此核取方塊時,[最終畫面格緩衝區] 色彩和中繼色彩值會以透明模式顯示在棋盤圖樣上方。 如果清除此核取方塊,則會忽略色彩值的 Alpha 色板。
視窗底部顯示有機會影響的像素色彩的事件,並伴隨 [初始] 和 [最終] 虛擬事件,以表示畫面格緩衝區中像素的初始和最終色彩值。 初始色彩值是由變更像素色彩的第一個事件 (通常是 Clear 事件) 決定。 像素的記錄中一定會有這兩個虛擬事件,即使沒有受到其他任何事件影響也一樣。 當其他事件有機會影響像素時,會顯示在 [初始] 與 [最終] 事件之間。 事件可以展開,以顯示其詳細資料。 針對這種清除呈現目標的簡單事件,事件的效果只是色彩值。 像繪製呼叫這種比較複雜的事件,就會產生一或多個可能影響像素色彩的基本項目。
事件繪製的基本項目可以從其基本類型和索引,以及物件的基本項目總數來識別。 例如,像 [(6214) 中的第 (1456) 個三角形] 這樣的識別項,表示基本項目對應至由 6214 個三角形組成之物件中的第 1456 個三角形。 每個基本識別項的左邊都會有一個圖示,摘要說明該基本項目對像素的效果。 影響像素色彩的基本項目會以填滿結果色彩的圓角矩形來表示。 被排除對像素色彩有影響的基本項目,則會以指出像素被排除原因的圖示來表示。 本文稍後的<Primitive exclusion>一節將會說明這些圖示。
您可以展開每個基本項目來檢查像素著色器輸出如何與現有的像素色彩合併,而產生結果色彩。 從這裡您也可以檢查或偵錯與基本項目相關聯的像素著色器程式碼,而且您可以進一步展開頂點著色器節點,以檢查頂點著色器輸入。
基本項目排除
如果基本項目被排除會影響像素色彩,被排除的原因有很多。 每個原因會以下表中所描述的圖示來表示:
圖示 |
排除的原因 |
---|---|
像素因為深度測試失敗而被排除。 |
|
像素因為剪式測試失敗而被排除。 |
|
像素因為樣板測試失敗而被排除。 |
繪製呼叫排除
如果繪製呼叫中的所有基本項目都因為測試失敗而被排除會影響呈現目標,則該繪製呼叫無法展開,而且旁邊會顯示對應至排除原因的圖示。 繪製呼叫排除的原因類似基本項目排除的原因,而且它們的圖示也很類似。
檢視及偵錯著色器程式碼
您可以使用與著色器相關聯之基本項目下面的控制項來檢視 [頂點著色器]、[輪廓著色器]、[網域著色器]、[幾何著色器] 或 [像素著色器] 的程式碼,或進行偵錯。
檢視著色器的原始程式碼
- 在與您想要檢視之著色器相關聯的基本項目下面,選擇著色器的標題,例如選擇 [頂點著色器],以檢視頂點著色器原始程式碼。
偵錯著色器
- 在與您想要偵錯之著色器相關聯的基本項目下面,選擇著色器標題右邊的 [開始偵錯]。
圖形物件連結
若要了解像素歷史記錄中的圖形事件,您可能需要發生事件時的裝置狀態相關資訊,或是事件參考之 Direct3D 物件的相關資訊。 針對像素歷史記錄中的每個事件,[圖形像素歷史記錄] 都會提供「當時-目前」(then-current) 裝置狀態的連結,以及相關物件的連結。