圖形像素歷史記錄
[圖形像素歷史記錄]是 Visual Studio 其中一個圖形診斷工具,可以幫助您瞭解遊戲或應用程式的特定框架期間,特定像素如何受到 Direct3D 事件的影響。
這是圖形像素記錄視窗:
了解像素記錄
使用 [圖形像素歷史記錄],您可以分析轉譯目標的特定像素在特定框架期間,如何受到 Direct3D 事件的影響。 您可以找出特定 Direct3D 事件的呈現問題,即使後續事件 (或同一個事件中的後續基本型別) 繼續變更像素的最終色彩值。 例如,像素可能轉譯不正確,另一個半透明像素接著又遮蔽該像素,使得它們的色彩在 framebuffer 中混合在一起。 如果您只能利用產生器目標的最終內容,難以診斷這種問題。
[圖形像素歷史記錄] 視窗顯示整個選取框架的像素完整記錄。 視窗頂端的 [最後的框架緩衝區] 會同時顯示寫入框架尾端的 framebuffer 之色彩,以及像素的其它資訊,例如框架來源和它的螢幕座標。 這個區域也包含 [呈現 Alpha] 核取方塊。 選取這個核取方塊時,會顯示 [最後的框架緩衝區] 色彩和中繼色彩值,同時在棋盤圖案上方會是透明的。 如果清除核取方塊,則會忽略色彩值的 Alpha 色板。
視窗底部顯示事件有機會與 [初始] 和 [最後] 假設事件一起影響像素色彩,而假設事件表示在 framebuffer 像素的初始和最後的色彩值。 變更像素的第一個相依於初始色彩值 (通常是 Clear 事件) 的色彩。 即使沒有其他事件會影響像素,像素在其歷程記錄中永遠都會有這兩個虛擬事件。 當其他事件可能影響像素時,會顯示在 [初始] 和 [最後] 事件之間。 可以展開事件以顯示其詳細資料。 對於簡單的事件 (例如清除轉譯目標的事件),事件的效果只是色彩值。 更複雜的事件 (例如繪製呼叫) 會產生一個或多個可能參與像素色彩的基本圖形
由事件所繪製的基本圖形是由其基本圖形類型和索引以及物件的基本圖形總數所識別。 例如,識別項 [三角形 (6214) 之 (1456)] 表示基本圖形對應至 6214 個三角形所組成之物件中的第 1456 個三角形。 每個基本識別項左邊有一個圖示,摘要列出該基本識別項對像素造成的影響。 影響像素色彩的基本圖形是以填滿結果色彩的圓角矩形表示。 由於會影響像素色彩而遭排除的基本圖形,是以指出排除像素之原因的圖示表示。 本文後續的基本圖形排除一節將描述這些圖示。
您可以展開每個基本型別以檢查像素著色器輸出與現有像素色彩結合產生最終色彩的方式。 您也可以從這裡檢查或偵錯與基本圖形相關聯的像素著色器 (Pixel Shader) 程式碼,然後進一步展開頂點著色器節點以檢查頂點著色器輸入。
基本圖形排除
如果已排除基本圖形對像素色彩的影響,發生排除可能有各種原因。 每個原因都會以這個表格中描述的圖示來表示:
圖示 |
排除的原因 |
---|---|
像素已排除因為它無法執行深度測試。 |
|
像素已排除因為它無法執行剪式測試。 |
|
像素已排除因為它無法執行樣板測試。 |
繪製呼叫排除
如果所有在繪製呼叫的原始從影響呈現目標已排除,因為它們不符合測試內容,則繪製呼叫無法展開,並對應至排除原因的圖示旁邊顯示。 繪製呼叫排除的原因類似原始排除的原因,然後,其圖示是類似的。
檢視及偵錯著色器程式碼
您可以使用與著色器相關的基本型別下的控制項,以檢視 [端點著色器]、[輪廓著色器]、 [網域著色器]、 [幾何著色器] 或 [像素著色器] 的程式碼,或是進行偵錯。
檢視著色器的原始程式碼
- 在與所要檢視之著色器相關聯的基本圖形下,選擇著色器的標題 (例如,選擇 [頂點著色器]) 以檢視頂點著色器原始程式碼。
若要對著色器進行偵錯
- 在與所要偵錯之著色器相關聯的基本圖形下方,著色器標題的右側,選擇 [開始偵錯]。
圖形物件的連結
若要了解像素記錄的圖形事件,您可能需要事件發生時間的裝置狀態,或是事件所參照之 Direct3D 物件的相關資訊。 對於像素記錄內的每個事件,[圖形像素歷史記錄] 會提供當時裝置狀態與相關物件的連結。