Utilisation de code XAML avec les applications DirectX holographiquesUsing XAML with holographic DirectX apps

Notes

Cet article s’applique aux API natives WinRT héritées.This article relates to the legacy WinRT native APIs. Pour les nouveaux projets d’application native, nous vous recommandons d’utiliser l' API OpenXR.For new native app projects, we recommend using the OpenXR API.

Cette rubrique explique l’impact du basculement entre les vues XAML 2D et les vues immersives dans votre application DirectX, et comment utiliser efficacement un affichage XAML et une vue immersive.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.

Vue d’ensemble du basculement de vue XAMLXAML view switching overview

Sur HoloLens, une application immersif qui peut afficher ultérieurement un affichage XAML 2D doit initialiser d’abord cette vue XAML et basculer immédiatement vers une vue immersive à partir de là.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 se chargera avant que votre application puisse faire quoi que ce soit, ce qui ajoute une petite augmentation du temps de démarrage.XAML will load before your app can do anything, which adds a small increase to your startup time. XAML continuera à occuper de l’espace mémoire dans le processus de votre application pendant qu’il reste en arrière-plan.XAML will continue to occupy memory space in your app process while it stays in the background. Le délai de démarrage et l’utilisation de la mémoire dépendent de ce que fait votre application avec XAML avant de basculer vers la vue native.The amount of startup delay and memory usage depends on what your app does with XAML before switching to the native view. Si vous ne faites rien dans votre code de démarrage XAML dans un premier temps, sauf démarrer votre vue immersif, l’impact doit être mineur.If you do nothing in your XAML startup code at first except start your immersive view, the impact should be minor. En outre, étant donné que votre rendu holographique est effectué directement vers la vue immersive, vous évitez toute restriction XAML sur ce rendu.Also, because your holographic rendering is done directly to the immersive view, you'll avoid any XAML-related restrictions on that rendering.

Le nombre d’utilisations de la mémoire pour le processeur et le GPU.The memory usage counts for both CPU and GPU. Direct3D 11 peut échanger la mémoire graphique virtuelle, mais il peut ne pas être en mesure de permuter une partie ou la totalité des ressources du GPU XAML, et il peut y avoir un impact notable sur les performances.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. Dans les deux cas, ne pas charger les fonctionnalités XAML dont vous n’avez pas besoin offre davantage de place pour votre application et offre une meilleure expérience.Either way, not loading any XAML features you don't need will leave more room for your app and provide a better experience.

Flux de travail de basculement de vue XAMLXAML view switching workflow

Le flux de travail d’une application qui va directement du XAML au mode immersif est le suivant :The workflow for an app that goes directly from XAML to immersive mode is like so:

  • L’application démarre en mode XAML 2D.The app starts up in the 2D XAML view.
  • La séquence de démarrage XAML de l’application détecte si le système actuel prend en charge le rendu holographique :The app’s XAML startup sequence detects if the current system supports holographic rendering:
  • Si c’est le cas, l’application crée l’affichage immersif et le met immédiatement au premier plan.If so, the app creates the immersive view and brings it to the foreground right away. Le chargement XAML est ignoré pour tout élément qui n’est pas nécessaire sur les appareils Windows Mixed Reality, y compris les classes de rendu et le chargement des ressources dans la vue XAML.XAML loading is skipped for anything not necessary on Windows Mixed Reality devices, including any rendering classes and asset loading in the XAML view. Si l’application utilise du code XAML pour l’entrée au clavier, cette page d’entrée doit encore être créée.If the app is using XAML for keyboard input, that input page should still be created.
  • Si ce n’est pas le cas, la vue XAML peut continuer avec l’entreprise comme d’habitude.If not, the XAML view can continue with business as usual.

Conseil pour le rendu des graphiques sur les deux vuesTip for rendering graphics across both views

Si votre application doit implémenter une certaine quantité de rendu dans DirectX pour la vue XAML dans Windows Mixed Reality, il est préférable de créer un convertisseur capable de fonctionner avec les deux vues.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. Le convertisseur doit être une instance qui est accessible à partir des deux vues, et il doit basculer entre le rendu 2D et le rendu holographique.The renderer should be one instance that can be accessed from both views, and it should switch between 2D and holographic rendering. Ainsi, les ressources GPU ne sont chargées qu’une seule fois, ce qui réduit le temps de chargement, l’impact sur la mémoire et la quantité de ressources échangées lors du basculement des vues.This way GPU assets only load once, which reduces load times, memory impact, and the amount of swapped resources when switching views.