2010-12-08 363 views

回答

37

您的問題沒有給出關於您在閱讀互聯網上的文章或者您想了解WPF中的硬件加速時感到困惑的細節。所以,我會嘗試給你一個一般的,但簡單的總結它是如何工作的。

爲了獲得GPU加速渲染,Windows Presentation Foundation(WPF)通過DirectX管道呈現並呈現圖形。 GPU或圖形處理單元是爲顯卡供電的芯片。實質上,硬件加速可以將WPF應用程序中的圖形從計算機的主處理器(CPU)渲染到視頻卡的處理器(GPU)中。通過使用專門用於渲染圖形而不是由CPU運行的軟件功能的視頻卡上的硬件,應用程序的圖形和用戶界面的性能得到提高或加速。最終目標是複雜的圖形例程變成渲染約束(也就是受GPU的功能限制),而不是處理器綁定(也就是說,受計算機CPU的能力和速度的限制)。這樣,CPU就可以完成其他工作,充分利用視頻卡的獨特圖形功能,並且每次用戶升級到更新,更快,更高級的視頻卡時都可以提高應用的性能(當它們變成可用)。

這當然假設你的顯卡支持硬件加速。事實上,不是所有的人做的,WPF適應這種帶有三層方法:

  1. 如果你的顯卡不提供硬件加速的任何級別,例如,如果你正在運行一個DirectX版本低於7.0,WPF回落到0級渲染模式或軟件加速。

  2. 如果你的顯卡支持部分硬件加速,比如如果你運行的是7.0和9.0之間的DirectX版本,那麼WPF使用Tier 1渲染模式。

  3. 如果你的顯卡支持所有圖形輸出硬件加速,對應於一個版本的DirectX等於或大於9.0,則WPF使用2級渲染模式。

This MSDN page提供了有關這些圖形渲染層次和什麼特性和功能支持硬件加速的更多信息。

我不知道你是否已經看過this blog post,但是對於我剛剛解釋的內容有了更好的理解,現在再閱讀它時可能更有意義。

但是,請記住,與WPF的交易的一部分是,您不必擔心此過程的細節和特質。該技術足夠智能,可以在任何可能的情況下使用硬件優化,並在必要時回退到基於軟件的渲染。即使在使用傳統視頻卡的舊計算機上,您的WPF應用程序仍然可以工作,儘管比新客戶端要慢。所以這可能是你不需要擔心的,除了偶然的好奇之外。

+1

我有一個WPF項目,我需要在用戶控件的OnRender上使用StreamGeometryContext和PolyLineTo函數渲染200,000個多邊形。當我這樣做時,即使只是拖動窗戶,整個窗戶也變得非常緩慢。所有多邊形對象和筆都凍結。我不認爲這裏正在使用硬件加速。任何建議?我的系統是Widows 7 + Visual Studio 13. – 2015-02-20 02:08:03