簡體   English   中英

WPF 3D動態紋理

[英]WPF 3D Dynamic Textures

我正在編寫一個渲染地球切片的程序(c#.NET 4.0 WPF 3D)(如OpendTect或Petrel的地震模塊)。

問題是我需要能夠放大,並仍然可以看到細節。

我嘗試了一個非常詳細的紋理(5000x5000),但它吃了太多的內存(200-300 MB),並在我嘗試增​​加大小時崩潰。

現在我想看看是否有任何使用類似動態紋理的方法 - 根據與相機的距離而改變的方式。

或者也許還有其他一些處理高分辨率表面的方法?

我用這段代碼加載紋理:

wbm = new WriteableBitmap(
(int)1306*scale,
(int)ns*scale,
96,
96,
PixelFormats.Indexed8,
new BitmapPalette(getColors()));

...

visual3d.Material = visual3d.BackMaterial
= new DiffuseMaterial(new ImageBrush(wbm));

你有幾個選擇:

  • 優化當前解決方案。 5000 * 5000 * 4大約100 MB。 你如何加載和顯示紋理? 我有一個應用程序 ,可以渲染1100個3d對象並使用300MB內存,性能足夠好。 我強烈建議您運行一個分析器,不僅僅是出於純粹的性能原因,還有助於捕獲錯誤! 我的WPF 3D,感謝分析器,我發現我做了無用的細分。
  • 創建一個整個紋理的低分辨率圖像和一些小的高分辨率圖像,這些圖像是紋理的一部分。 如果用戶單擊/放大,您將加載適合視口的小高分辨率圖像。 與谷歌地圖類似的效果。
  • 使用XNA。 您可以在WPF中托管XNA並使用DXT紋理。 我不確定,但WPF不直接支持紋理共振峰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM