Verwenden von XAML mit holographischen DirectX-AppsUsing XAML with holographic DirectX apps

Hinweis

Dieser Artikel bezieht sich auf die älteren WinRT-APIs.This article relates to the legacy WinRT native APIs. Bei neuen nativen App-Projekten wird die Verwendung der openxr-API empfohlen.For new native app projects, we recommend using the OpenXR API.

In diesem Thema wird erläutert, wie sich der Wechsel zwischen 2D-XAML-Ansichten und immersiven Sichten in Ihrer DirectX-APP und die effiziente Verwendung einer XAML-Ansicht und der immersiven Ansicht Unternehmen.This topic explains the impact of switching between 2D XAML views and immersive views in your DirectX app, and how to make efficient use of both a XAML view and immersive view.

Übersicht über das Wechseln der XAML-AnsichtXAML view switching overview

Bei hololens muss eine immersive APP, die später eine 2D-XAML-Ansicht anzeigen kann, die XAML-Ansicht zunächst initialisieren und sofort zu einer immersiven Ansicht wechseln.On HoloLens, an immersive app that may later display a 2D XAML view needs to initialize that XAML view first and immediately switch to an immersive view from there. XAML wird geladen, bevor Ihre APP etwas Unternehmen kann, was zu einer geringen Erhöhung der Startzeit führt.XAML will load before your app can do anything, which adds a small increase to your startup time. XAML belegt weiterhin Speicherplatz in Ihrem App-Prozess, während er im Hintergrund bleibt.XAML will continue to occupy memory space in your app process while it stays in the background. Die Menge der Startverzögerung und Speicherauslastung hängt davon ab, was Ihre APP mit XAML durchführt, bevor Sie zur systemeigenen Ansicht gewechselt wird.The amount of startup delay and memory usage depends on what your app does with XAML before switching to the native view. Wenn Sie zuerst in Ihrem XAML-Startcode mit Ausnahme des Starts der immersiven Ansicht Vorgehen, sollte die Auswirkung gering sein.If you do nothing in your XAML startup code at first except start your immersive view, the impact should be minor. Da Ihr holografisches Rendering direkt in der immersiven Ansicht erfolgt, vermeiden Sie außerdem alle XAML-bezogenen Einschränkungen für dieses Rendering.Also, because your holographic rendering is done directly to the immersive view, you'll avoid any XAML-related restrictions on that rendering.

Die Anzahl der Arbeitsspeicher Auslastung für CPU und GPU.The memory usage counts for both CPU and GPU. Direct3D 11 kann den virtuellen Grafikspeicher austauschen, kann jedoch möglicherweise einige oder alle XAML-GPU-Ressourcen nicht austauschen, und es kann zu einem spürbaren Leistungseinbußen kommen.Direct3D 11 can swap virtual graphics memory, but it might not be able to swap out some or all of the XAML GPU resources, and there might be a noticeable performance hit. In beiden Fällen bleibt das Laden von XAML-Features, die Sie nicht benötigen, für Ihre APP mehr Platz und bietet eine bessere Benutzer Leistung.Either way, not loading any XAML features you don't need will leave more room for your app and provide a better experience.

Workflow für die XAML-Ansichts UmstellungXAML view switching workflow

Der Workflow für eine APP, die direkt von XAML in den immersiven Modus wechselt, sieht wie folgt aus:The workflow for an app that goes directly from XAML to immersive mode is like so:

  • Die APP startet in der 2D-XAML-Ansicht.The app starts up in the 2D XAML view.
  • Die XAML-Startsequenz der APP erkennt, ob das aktuelle System Holographic-Rendering unterstützt:The app’s XAML startup sequence detects if the current system supports holographic rendering:
  • Wenn dies der Fall ist, erstellt die APP die immersive Ansicht und bringt Sie sofort in den Vordergrund.If so, the app creates the immersive view and brings it to the foreground right away. Das Laden von XAML wird für alles, was auf Windows Mixed Reality-Geräten nicht erforderlich ist, ausgelassen, einschließlich aller Renderingklassen und Laden von Assets in der XAML-Ansicht.XAML loading is skipped for anything not necessary on Windows Mixed Reality devices, including any rendering classes and asset loading in the XAML view. Wenn die APP XAML für Tastatureingaben verwendet, sollte diese Eingabe Seite weiterhin erstellt werden.If the app is using XAML for keyboard input, that input page should still be created.
  • Andernfalls kann die XAML-Ansicht das Unternehmen wie gewohnt fortsetzen.If not, the XAML view can continue with business as usual.

Tipp zum Rendern von Grafiken in beiden AnsichtenTip for rendering graphics across both views

Wenn Ihre APP eine gewisse Menge an Rendering in DirectX für die XAML-Ansicht in Windows Mixed Reality implementieren muss, besteht die beste Lösung darin, einen Renderer zu erstellen, der mit beiden Ansichten arbeiten kann.If your app needs to implement some amount of rendering in DirectX for the XAML view in Windows Mixed Reality, your best bet is to create one renderer that can work with both views. Der Renderer muss eine Instanz sein, auf die von beiden Ansichten aus zugegriffen werden kann, und es sollte zwischen 2D-und Holographic-Rendering gewechselt werden.The renderer should be one instance that can be accessed from both views, and it should switch between 2D and holographic rendering. Auf diese Weise werden GPU-Assets nur einmal geladen, wodurch Ladezeiten, Arbeitsspeicher Auswirkungen und die Menge der austauschten Ressourcen beim Wechseln von Sichten reduziert werden.This way GPU assets only load once, which reduces load times, memory impact, and the amount of swapped resources when switching views.