使用全像攝影 DirectX 應用程式中的 XAML

注意

本文與舊版 WinRT 原生 API 相關。 針對新的原生應用程式專案,我們建議使用 OpenXR API

本主題說明在 DirectX 應用程式中切換 2D XAML 檢視和沉浸式檢視 的影響,以及如何有效使用 XAML 檢視和沉浸式檢視。

XAML 檢視切換概觀

在 HoloLens 上,稍後可能會顯示 2D XAML 檢視的沉浸式應用程式必須先初始化該 XAML 檢視,然後立即從該處切換到沈浸式檢視。 XAML 會在您的應用程式可以執行任何動作之前載入,這會增加啟動時間的一小部分。 XAML 會繼續佔用應用程式進程中的記憶體空間,同時保留在背景中。 啟動延遲和記憶體使用量取決於您的應用程式在切換至原生檢視之前,使用 XAML 的功能。 如果您一開始不會在 XAML 啟動程式碼中執行任何動作,但啟動沈浸式檢視除外,影回應該是次要的。 此外,由於全像攝影轉譯會直接完成至沈浸式檢視,因此您將避免該轉譯的任何 XAML 相關限制。

CPU 和 GPU 的記憶體使用量計數。 Direct3D 11 可以交換虛擬圖形記憶體,但可能無法交換部分或所有 XAML GPU 資源,而且可能會有明顯的效能命中。 不論是哪一種方式,您不需要載入任何不需要的 XAML 功能,都會為您的應用程式留下更多空間,並提供更好的體驗。

XAML 檢視切換工作流程

直接從 XAML 到沈浸式模式的應用程式工作流程如下所示:

  • 應用程式會在 2D XAML 檢視中啟動。
  • 應用程式的 XAML 啟動順序會偵測目前系統是否支援全像攝影轉譯:
  • 如果是這樣,應用程式會建立沉浸式檢視,並立即將它帶到前景。 對於Windows Mixed Reality裝置上不需要的任何專案,會略過 XAML 載入,包括 XAML 檢視中的任何轉譯類別和資產載入。 如果應用程式使用 XAML 進行鍵盤輸入,則仍應該建立該輸入頁面。
  • 如果沒有,XAML 檢視可以像往常一樣繼續商務。

在兩個檢視之間轉譯圖形的提示

如果您的 app 需要針對 Windows Mixed Reality 中的 XAML 檢視在 DirectX 中實作一些轉譯,則最佳選擇是建立一個可搭配這兩個檢視使用的轉譯器。 轉譯器應該是可從這兩個檢視存取的一個實例,而且應該在 2D 和全像攝影轉譯之間切換。 如此一來,GPU 資產只會載入一次,這可減少切換檢視時的載入時間、記憶體影響,以及交換的資源數量。