Verwenden von XAML mit holographischen DirectX-Apps

Hinweis

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

In diesem Thema werden die Auswirkungen des Wechsels zwischen 2D-XAML-Ansichten und immersiven Ansichten in Ihrer DirectX-App erläutert, und es wird erläutert, wie Sie sowohl eine XAML-Ansicht als auch eine immersive Ansicht effizient verwenden.

Übersicht über den Wechsel der XAML-Ansicht

Auf HoloLens eine immersive App, die später möglicherweise eine 2D-XAML-Ansicht anzeigen kann, diese XAML-Ansicht zuerst initialisieren und sofort zu einer immersiven Ansicht wechseln. XAML wird geladen, bevor Ihre App etwas tun kann. Dies führt zu einer geringen Erhöhung der Startzeit. XAML belegt weiterhin Speicherplatz in Ihrem App-Prozess, während er im Hintergrund bleibt. Die Menge an Startverzögerung und Speicherauslastung 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 die immersive Ansicht zu starten, sollte die Auswirkung gering sein. Da Ihr holografisches Rendering direkt mit der immersiven Ansicht erfolgt, vermeiden Sie außerdem XAML-bezogene Einschränkungen für dieses Rendering.

Die Anzahl der Arbeitsspeicherauslastungen für CPU und GPU. Direct3D 11 kann den virtuellen Grafikspeicher austauschen, kann jedoch möglicherweise nicht einige oder alle XAML-GPU-Ressourcen austauschen, und es kann zu einer spürbaren Leistungssteigerung führen. In beiden Richtungen lässt das Laden von XAML-Features, die Sie nicht benötigen, mehr Platz für Ihre App und bietet eine bessere Benutzererfahrung.

Workflow zum Wechseln der XAML-Ansicht

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

  • 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. Xaml-Ladevorgang wird für alles übersprungen, was auf Windows Mixed Reality Geräten nicht erforderlich ist, einschließlich Renderingklassen und Laden von Ressourcen in der XAML-Ansicht. Wenn die App XAML für die Tastatureingabe verwendet, sollte diese Eingabeseite weiterhin erstellt werden.
  • Falls nicht, kann die XAML-Ansicht wie gewohnt fortgesetzt werden.

Tipp zum Rendern von Grafiken in beiden Ansichten

Wenn Ihre App ein gewisses Rendering in DirectX für die XAML-Ansicht in Windows Mixed Reality implementieren muss, sollten Sie am besten einen Renderer erstellen, der mit beiden Ansichten arbeiten kann. Der Renderer sollte eine Instanz sein, auf die von beiden Ansichten aus zugegriffen werden kann, und er sollte zwischen 2D und holografischem Rendering wechseln. Auf diese Weise werden GPU-Ressourcen nur einmal geladen, wodurch Ladezeiten, Auswirkungen auf den Arbeitsspeicher und die Menge der ausgetauschten Ressourcen beim Wechseln von Ansichten reduziert werden.