WPF如何提升三維呈現效能及最佳化
來源:互聯網
上載者:User
在應用程式中使用 WPF產生三維情境,可以在視覺給使用者提供了很好的展現效果,相反在此過程中對電腦系統資源及硬體裝置的需求條件也是很苛刻的。下面我就重點說明下wpf處理三維圖形在哪些方面需要考慮效能最佳化。
一、圖形硬體加速
wpf中的圖形呈現都是通過圖形卡的GPU來進行計算處理的,一般WPF 系統定義了三個呈現層:呈現層 0 無圖形硬體加速。DirectX 版本層級低於 7.0;呈現層 1 部分圖形硬體加速。DirectX 版本層級高於或等於 7.0 且低於 9.0。視頻 RAM必須大於或等於30MB。多紋理單元單元數必須大於或等於 2(顯卡AGP速率2X);
呈現層 2 大多數圖形功能都使用圖形硬體加速。DirectX 版本層級高於或等於 9.0。視頻 RAM必須大於或等於120MB。多紋理單元單元數必須大於或等於 4(顯卡AGP速率4X或更高8X、16X)。
二、3D 模型材質的使用
一般3D 模型材質的使用,多數會用到Brush,但不同的Brush材質呈現的速度也不同,SolidColorBrush(直接給模型添加固有色) 、LinearGradientBrush 相對於ImageBrush、VisualBrush等運算速度要快得多,已緩衝的Brush比未緩衝的Brush快。
三、模型的建立
在三維情境中我們盡量建立GeometryModel3D三角面片小於60.000個,頂點小於20.000個,盡量重複使用外形變化不大的模型,除非有新形狀需要從新建立模型,盡量在一個viewport3D中建立子模型不要建立多個viewport3D。
四、關於3d消除鋸齒
wpf中的3d消除鋸齒,只適合於vista系統,如果想在xp系統下實現消除鋸齒,可以在註冊表中設定最大多級採樣值 HKEY_CURRENT_USER/SOFTWARE/Microsoft/Avalon.Graphics/MaxMultisampleType 實值型別為DWORD一般設為4 根據顯卡的效能進行合適的調整。(不過建議最好不使用這種方法,使用修改註冊表可以實現消除鋸齒,但同時也可能會產生新的呈現問題,比如:3D 模型體貼與其他對象重疊產生圖形邊緣出現虛線等,不過通過設定顯卡的代替像素中心功能可以解決虛線問題,但同時也會帶來其他不可預知的不穩定因素)
所以根據自己對三維呈現的實際展現要求可以靈活選擇最佳化設定的方法,目的只要一個就是要保證具有穩定、優良的效能又有很好的三維呈現效果。