この記事では、レンダリングのパフォーマンスを向上させるために、汚れた領域をレンダリングすることで発見を説明しています。
ダーティ地区ダーティリージョン
コンピュータグラフィックスでレンダリングは、各フレームの画像のすべてを引き出すことができるが、このコンピュータの性能要件が非常に高いです。
レンダリングを低減するためにダーティエリア(ダーティリージョン)の導入は、コンピュータのパフォーマンスに必要とされます。各フレームを描画すると、ソフトウェアレンダリングでドロー変化の一部のみが多くのリソースを節約することができます。各フレームのレンダリング中に、一部を再描画する必要性を変更することはダーティエリアです。
以下は、私のプログラムWPFであるWalterlv.CloudKeyboard汚れた領域のように相互に作用し、絶えず再描画する必要があります。
あなたは、ほぼ全体のインターフェースを含むダーティエリアを見て、非常に頻繁にリフレッシュすることができます。これは好ましくないレンダリング性能の面で明確です。
*もちろん、このプログラムは、すべてがされて再レンダリングパフォーマンスが許容されている場合でも、非常に小さいです。ときに、プログラムの一部*しかし、多くのように、より複雑であるがGeometry
ときに、この部分は、重大なパフォーマンスの問題をもたらす再レンダリングするだけでなく、3Dグラフィックス。
WPFのパフォーマンススイート
ダウンロードするWPFのパフォーマンススイート:
ダーティ監視ゾーン
[スタート] WPFパフォーマンススイート、[ツール]穿孔、およびアクションメニューで分析するためにWPFのプロセスを開始します。が、このツールは、長い間更新されていないが、それでもWPFプログラムの.NETのコア3バージョンをサポートしています。
プログラムが実行された場合、種々の特性は、WPFアプリケーションデータテーブルことがわかります。
さてShow dirty-region update overlay
、この記事の冒頭を見てチェックするためのオプションは、オーバーレイのダーティエリアを示しています。
そして、汚れたエリアに関連するオプションが3以下のとおりです。
- ダーティ・リージョンの更新オーバーレイを表示
- オーバーレイ表示領域汚い、汚い、各時間帯には、ときに再レンダリングする必要の半透明色の新しい層の上に重ね表示されます。
- Disable dirty region support
- 禁用脏区支持。这时,每次渲染都将重绘整个窗口。
- Clear back-buffer before rendering
- 每次重绘之前都将清除之前所有的绘制,使用此选项,你可以迅速找到界面中频繁刷新的部分,而重绘频率不高的部分多数时候都是纯黑。
优化脏区重绘
一开始的程序中,因为我使用了模拟 UWP 的高光效果,导致大量的控件在重绘高光部分,这是导致每一帧都在重新渲染的罪魁祸首。
于是我将高光渲染关闭,脏区的重新渲染将仅仅几种在控件样式改变的时候(例如焦点改变):
光照效果可以参见我的另一篇博客:
参考资料
我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。
如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。