最佳化效能:運用硬體
WPF 的內部架構有兩個轉譯管道:硬體和軟體。 本主題提供這些轉譯管道的相關資訊,協助您決定應用程式的效能最佳化。
判斷 WPF 效能的最重要因素之一,就是轉譯繫結—您需要轉譯的像素越多,效能成本就越大。 不過,可以卸除至圖形處理單位 (GPU) 的轉譯愈多,您可以獲得更多的效能優勢。 WPF 應用程式硬體轉譯管道充分利用 Microsoft DirectX 功能,支援至少 Microsoft DirectX 7.0 版以上的硬體。 支援 Microsoft DirectX 7.0 版和 PixelShader 2.0+ 功能的硬體可以進一步最佳化。
WPF 軟體轉譯管道完全是 CPU 繫結。 WPF 會利用 CPU 中的 SSE 和 SSE2 指令集來實作最佳化、功能完整的軟體轉譯器。 每當無法使用硬體轉譯管道轉譯應用程式功能時,軟體的後援即可順暢的轉譯。
在軟體模式中轉譯與填滿率相關的最大效能問題,定義為您要轉譯的像素數。 如果您擔心軟體轉譯模式中的效能,請嘗試將像素重繪的次數降到最低。 例如,如果您有具有藍色背景的應用程式,然後呈現稍微透明的影像,您會在應用程式中轉譯所有像素兩次。 因此,使用影像轉譯應用程式所需的時間會比只有藍色背景還要長兩倍。
可能很難預測應用程式將執行的硬體組態。 不過,您可能想要考慮一種設計,讓應用程式在不同的硬體上執行時順暢切換功能,以便充分利用每個不同的硬體組態。
為了達成此目的,WPF 提供功能來判斷系統在運行時間的圖形功能。 圖形功能取決於將顯示卡分類為三個轉譯功能層之一。 WPF 會公開可讓應用程式查詢轉譯功能層的 API。 您的應用程式接著可以在執行階段,根據硬體所支援的轉譯層來採用不同的程式碼路徑。
對轉譯層級的影響最大的圖形硬體功能如下︰
視訊 RAM:圖形硬體上的視訊記憶體數量決定可用於組合圖形的緩衝區大小和數目。
像素著色器:像素著色器是根據像素來計算效果的圖形處理函式。 根據所顯示圖形的解析度,每個顯示框架都可能需要處理數百萬個像素。
頂點著色器:頂點著色器是在物件頂點資料上執行數學運算的圖形處理函式。
多紋理支援:多紋理支援指的是可以在混色作業期間於 3D 圖形物件上套用兩個以上的不同紋理。 多紋理支援的程度取決於圖形硬體上的多紋理單位數目。
像素著色器、頂點著色器和多重文字功能可用來定義特定的 DirectX 版本層級,進而用來定義 WPF 中的不同轉譯層。
圖形硬體的功能決定 WPF 應用程式的轉譯功能。 WPF 系統定義三個轉譯層:
轉譯層 0:沒有圖形硬體加速。 DirectX 版本層級小於 7.0 版。
轉譯層 1:部分圖形硬體加速。 DirectX 版本層級大於或等於 7.0 版,以及小於 9.0 版。
轉譯層 2:大部分圖形功能都使用圖形硬體加速。 DirectX 版本層級大於或等於 9.0 版。
如需 WPF 轉譯層的詳細資訊,請參閱圖形轉譯層。