Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Ten artykuł dotyczy starszych natywnych interfejsów API winRT. W przypadku nowych projektów aplikacji natywnych zalecamy używanie interfejsu API OpenXR.
W tym temacie opisano wpływ przełączania między widokami XAML 2D i immersywnymi widokami w aplikacji DirectX oraz sposób efektywnego korzystania zarówno z widoku XAML, jak i widoku immersyjnego.
Omówienie przełączania widoku XAML
Na urządzeniu HoloLens aplikacja immersywna, która może później wyświetlać widok XAML 2D, musi najpierw zainicjować ten widok XAML i natychmiast przełączyć się z tego miejsca do widoku immersyjnego. Kod XAML zostanie załadowany przed wykonaniem dowolnych czynności przez aplikację, co zwiększa czas uruchamiania. Kod XAML będzie nadal zajmować miejsce na pamięci w procesie aplikacji, gdy pozostanie 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 nie zrobisz nic w kodzie uruchamiania XAML na początku, z wyjątkiem uruchomienia widoku immersyjnego, wpływ powinien być niewielki. Ponadto, ponieważ renderowanie holograficzne odbywa się bezpośrednio w widoku immersyjnym, należy unikać wszelkich ograniczeń związanych z językiem XAML dotyczących tego renderowania.
Użycie pamięci jest liczone zarówno dla procesora CPU, jak i procesora GPU. Funkcja Direct3D 11 może zamienić wirtualną pamięć graficzną, ale może nie być w stanie zamienić niektórych lub wszystkich zasobów procesora GPU XAML i może wystąpić zauważalna wydajność. Tak czy inaczej, nie ładujesz żadnych funkcji XAML, których nie potrzebujesz, pozostawisz więcej miejsca dla aplikacji i zapewni lepsze środowisko pracy.
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 następująco:
- Aplikacja zostanie uruchomiona w widoku XAML 2D.
- Sekwencja uruchamiania XAML aplikacji wykrywa, czy bieżący system obsługuje renderowanie holograficzne:
- Jeśli tak, aplikacja tworzy widok immersyjny i od razu przenosi go na pierwszy plan. Ładowanie kodu XAML jest pomijane dla niczego, co nie jest konieczne na urządzeniach Windows Mixed Reality, w tym wszelkie klasy renderowania i ładowanie elementów zawartości w widoku XAML. Jeśli aplikacja używa języka XAML do wprowadzania za pomocą klawiatury, ta strona wejściowa powinna być nadal tworzona.
- Jeśli tak nie jest, widok XAML może kontynuować pracę w zwykły sposób.
Porada dotycząca renderowania grafiki w obu widokach
Jeśli aplikacja musi zaimplementować pewną ilość renderowania w programie DirectX dla widoku XAML w Windows Mixed Reality, najlepszym rozwiązaniem jest utworzenie jednego modułu renderującego, który może pracować z obydwoma widokami. Moduł renderujący powinien być jednym wystąpieniem, do którego można uzyskać dostęp z obu widoków, i powinno przełączać się między renderowaniem 2D a renderowaniem holograficznym. Dzięki temu zasoby procesora GPU są ładowane tylko raz, co zmniejsza czas ładowania, wpływ pamięci i ilość zamienionych zasobów podczas przełączania widoków.