Używanie języka XAML z aplikacjami DirectX dla systemu Holographic

Uwaga

Ten artykuł dotyczy starszych natywnych interfejsów API WinRT. W przypadku nowych projektów aplikacji natywnych zalecamy korzystanie z interfejsu API OpenXR.

W tym temacie wyjaśniono wpływ przełączania między widokami 2D XAML i widokami immersyjnymi w aplikacji DirectX oraz opisano, jak efektywnie korzystać zarówno z widoku XAML, jak i widoku immersyjnego.

Omówienie przełączania widoku XAML

Na HoloLens aplikacja immersywna, która może później wyświetlać widok 2D XAML, musi najpierw zainicjować ten widok XAML i natychmiast przełączyć się z tego widoku na widok immersyjny. Kod XAML zostanie załadowany, zanim aplikacja będzie w stanie wykonać cokolwiek, co spowoduje niewielkie zwiększenie czasu uruchamiania. Kod XAML będzie nadal zajmować miejsce w pamięci w procesie aplikacji, pozostając w tle. Ilość opóźnienia uruchamiania i użycia pamięci zależy od tego, co aplikacja robi z językiem XAML przed przełączeniem się do widoku natywnego. Jeśli na początku nie będziesz nic robić w kodzie startowym XAML, z wyjątkiem uruchamiania widoku immersyjnego, wpływ powinien być niewielki. Ponadto ze względu na to, że renderowanie holograficzne jest wykonywane bezpośrednio w widoku immersyjnym, unikniesz wszelkich ograniczeń tego renderowania związanych z XAML.

Użycie pamięci jest liczone zarówno dla procesora CPU, jak i procesora GPU. Direct3D 11 może zamieniać wirtualną pamięć grafiki, ale może nie być w stanie zamienić niektórych lub wszystkich zasobów procesora GPU XAML i może wystąpić zauważalny wzrost wydajności. W każdym przypadku, jeśli nie ładujesz żadnych funkcji XAML, których nie potrzebujesz, pozostawisz więcej miejsca dla aplikacji i zapewnisz lepsze środowisko.

Przepływ pracy przełączania widoku XAML

Przepływ pracy aplikacji, która przechodzi bezpośrednio z języka XAML do trybu immersyjnego, wygląda w ten sposób:

  • Aplikacja jest uruchamiana w widoku 2D XAML.
  • Sekwencja uruchamiania XAML aplikacji wykrywa, czy bieżący system obsługuje renderowanie holograficzne:
  • Jeśli tak, aplikacja tworzy widok immersyjny i od razu przekieruje go na pierwszy plan. Ładowanie kodu XAML jest pomijane na wszystkich urządzeniach Windows Mixed Reality, w tym wszystkich klas renderowania i ładowania zasobów w widoku XAML. Jeśli aplikacja używa języka XAML do wprowadzania danych za pomocą klawiatury, ta strona wejściowa nadal powinna zostać utworzona.
  • Jeśli nie, widok XAML może kontynuować pracę w zwykły sposób.

Porada na temat renderowania grafiki w obu widokach

Jeśli aplikacja wymaga zaimplementowania pewnego rodzaju renderowania w trybie DirectX dla widoku XAML w programie Windows Mixed Reality, najlepiej jest utworzyć jeden program renderowy, który może współpracować z oboma widokami. Program renderator powinien być jednym wystąpieniem dostępnym z obu widoków i powinien przełączać się między renderowaniem 2D i holograficznym. W ten sposób zasoby procesora GPU ładują się tylko raz, co skraca czas ładowania, wpływ na pamięć i ilość zamieniowanych zasobów podczas przełączania widoków.