WPF 設定純軟體渲染
最近看到有小夥伴說 WPF 使用硬體渲染,如何讓 WPF 不使用硬體渲染,因為他覺得效能太好了。萬一這個版本釋出了,產品經理說下個版本要提升效能就不好了。於是就找到一個快速的方法,讓程式不使用硬體渲染這樣下個版本要優化就讓程式使用硬體渲染。
設定 WPF 使用軟體渲染的方法是在 .net framework 3.5 之後才可以的。使用方法很簡單,在 Loaded 之後,新增下面程式碼
HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource; HwndTarget hwndTarget = hwndSource.CompositionTarget; hwndTarget.RenderMode = RenderMode.SoftwareOnly;
預設的 RenderMode 是 預設,也就是如果判斷有硬體就在硬體渲染,如果沒有就在 CPU 渲染。
如果設定 SoftwareOnly 就不在硬體渲染。
除了想降低效能,估計沒有人會設定這個。
上面的方法是開啟視窗級的軟渲染,如果想要在程序級設定開啟軟渲染,請使用這個程式碼
RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
如果想要在整個裝置執行 WPF 程式都使用軟渲染,那麼可以通過修改登錄檔的方法
在 HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics
裡面新增一個項,這個項是 dword
命名是 DisableHWAcceleration
使用預設值 0 就可以
那麼如何判斷當前的軟體是使用軟渲染的?
通過 WPF Performance Suite 執行之後附加到開啟的程序除錯,勾選 Draw software renderingwith purple tint 觀察原有程序是否被一個詭異的顏色放在上面,如果是那麼就是開啟軟渲染了
在 Performance Profiling Tools for WPF 的 Draw software renderingwith purple tint 就是使用高亮的矩形覆蓋在使用軟渲染的範圍,如果整個程序都是使用軟渲染,那麼整個程序都會被高亮
注意,除了設定使用軟渲染之外開啟高亮矩形可能會顯示在使用 bitmap effects 的元素上或通過RenderTargetBitmap渲染的內容等使用軟渲染的元素
現在微軟已經不開放 Performance Profiling Tools for WPF 下載,請點選這個 連結 下載
最近在做渲染優化,更多部落格請看 渲染相關
Video Rendering Issues for WPF Windows - Rick Strahl’s Web Log