Verwenden von XAML mit holographischen DirectX-Apps

Hinweis

Dieser Artikel bezieht sich auf die älteren nativen WinRT-APIs. Für neue native App-Projekte empfehlen wir die Verwendung der OpenXR-API.

In diesem Thema wird erläutert, wie sich der Wechsel zwischen 2D-XAML-Ansichten und immersiven Ansichten in Ihrer DirectX-App auswirkt und wie Sie sowohl eine XAML-Ansicht als auch eine immersive Ansicht effizient nutzen können.

Übersicht über das Umschalten der XAML-Ansicht

Auf HoloLens muss eine immersive App, die später möglicherweise eine 2D-XAML-Ansicht anzeigt, diese XAML-Ansicht zuerst initialisieren und von dort sofort zu einer immersiven Ansicht wechseln. XAML wird geladen, bevor Ihre App etwas tun kann, was ihre Startzeit geringfügig erhöht. XAML belegt weiterhin Speicherplatz in Ihrem App-Prozess, während er im Hintergrund bleibt. Die Höhe der Startverzögerung und der Arbeitsspeicherauslastung hängt davon ab, was Ihre App mit XAML vor dem Wechsel zur nativen Ansicht macht. Wenn Sie in Ihrem XAML-Startcode zunächst nichts tun, außer Ihre immersive Ansicht zu starten, sollten die Auswirkungen geringfügig sein. Da Ihr holografisches Rendering direkt in der immersiven Ansicht erfolgt, vermeiden Sie außerdem XAML-bezogene Einschränkungen für dieses Rendering.

Die Arbeitsspeicherauslastung zählt sowohl für DIE CPU als auch für die GPU. Direct3D 11 kann virtuellen Grafikspeicher austauschen, kann aber möglicherweise nicht einige oder alle XAML-GPU-Ressourcen austauschen, und es kann zu einem spürbaren Leistungseinschlag kommen. Wenn Sie keine XAML-Features laden, die Sie nicht benötigen, bleibt mehr Raum für Ihre App und bietet eine bessere Benutzeroberfläche.

Workflow zum Wechseln der XAML-Ansicht

Der Workflow für eine App, die direkt von XAML in den immersiven Modus wechselt, ist wie folgt:

  • Die App wird in der 2D-XAML-Ansicht gestartet.
  • Die XAML-Startsequenz der App erkennt, ob das aktuelle System holografisches Rendering unterstützt:
  • Wenn ja, erstellt die App die immersive Ansicht und bringt sie sofort in den Vordergrund. Das Laden von XAML wird für alles übersprungen, was auf Windows Mixed Reality Geräten nicht erforderlich ist, einschließlich aller Renderingklassen und des Ladens von Ressourcen in der XAML-Ansicht. Wenn die App XAML für die Tastatureingabe verwendet, sollte diese Eingabeseite weiterhin erstellt werden.
  • Andernfalls kann die XAML-Ansicht weiterhin wie gewohnt ausgeführt werden.

Tipp zum Rendern von Grafiken für beide Ansichten

Wenn Ihre App ein gewisses Maß an Rendering in DirectX für die XAML-Ansicht in Windows Mixed Reality implementieren muss, erstellen Sie am besten einen Renderer, der mit beiden Ansichten funktionieren kann. Der Renderer sollte eine instance sein, auf die von beiden Ansichten aus zugegriffen werden kann, und er sollte zwischen 2D- und holografischem Rendering wechseln. Auf diese Weise laden GPU-Ressourcen nur einmal, was die Ladezeiten, die Arbeitsspeicherbeeinträchtigung und die Menge der ausgetauschten Ressourcen beim Wechseln von Ansichten reduziert.