1. 程式人生 > >3D 應用程序性能

3D 應用程序性能

test wid icon highlight 兩個 bound copyright 靜態 content

原文:3D 應用程序性能

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/m0_37591671/article/details/74595999

3D 應用程序性能

渲染 3D 場景比渲染 2D 場景需要做更多的工作。當為 3D 場景應用動畫時,WPF 試圖以每秒 60 次的頻率更新改變的部分。根據場景的復雜程度,這可能很容易耗光顯卡內存的資源,從而會導致幀速率下降並且使動畫出現抖動。

可以使用幾種基本技術改善 3D 應用程序的性能。

  • 如果不需要裁剪超出視口範圍的內容,將 Viewport3D.ClipToBounds 屬性設置為 false。
  • 如果不需要在 3D 場景中提供命中測試,將 Viewport3D.IsHitTestVisible 屬性設置為 false。
  • 如果不在乎更差的指令 —— 在 3D 形狀上的粗糙邊緣 —— 將 Viewport3D 的RenderOptions.EdgeMode 屬性設置為 Aliased。
  • 如果 Viewport3D 比所需的更大,改變其尺寸使其更小。

創建最高效的網格和模型的幾個提示

只要有可能,就創建單獨的復雜的網格而不是幾個更新的網格。
如果需要為相同的網格使用不同的材質,只定義 MeshGeometry 對象一次(作為資源),然後重用 MeshGeometry 對象創建多個 GeometryModel3D 對象。
只要有可能,就在一個 Model3DGroup 對象中包裝一組 GeometryModel3D 對象,並且將這組對象放置到單個 ModelVisual3D 對象中。不要為每個 GeometryModel3D 對象都創建單獨的 ModelVisual3D 對象。
不要定義背面材質(使用 GeometryModel3D.BackMaterial 屬性),除非確實要查看對象的背面。同樣,當定義網格時,可以考慮忽略不可見的三角形。
盡可能使用純色畫刷、漸變畫刷以及圖像畫刷,而盡可能不要使用 DrawingBrush 畫刷和 Visual 畫刷,這兩個畫刷都需要更多的開銷。當使用 DrawingBrush 畫刷和 Visual 畫刷繪制靜態內容時,可以緩存畫刷中的靜態內容以提高性能。為此,將畫刷的 RenderOptions.CachingHint 屬性設置為 Cache。

3D 應用程序性能