Utilisation de code XAML avec les applications DirectX holographiques

Notes

Cet article concerne les API winRT natives héritées. Pour les nouveaux projets d’application native, nous vous recommandons d’utiliser l’API OpenXR.

Cette rubrique explique l’impact du basculement entre les vues XAML 2D et les vues immersives dans votre application DirectX, et explique comment utiliser efficacement une vue XAML et une vue immersive.

Vue d’ensemble du basculement de vue XAML

Sur HoloLens, une application immersive qui peut afficher ultérieurement une vue XAML 2D doit initialiser d’abord cette vue XAML et basculer immédiatement vers une vue immersive à partir de là. XAML se charge avant que votre application puisse faire quoi que ce soit, ce qui ajoute une légère augmentation à votre temps de démarrage. XAML continuera à occuper de l’espace mémoire dans votre processus d’application pendant qu’il reste en arrière-plan. La quantité de délai de démarrage et d’utilisation de la mémoire dépend de ce que fait votre application avec XAML avant de basculer vers la vue native. Si vous ne faites rien dans votre code de démarrage XAML au début, sauf démarrer votre vue immersive, l’impact doit être mineur. En outre, étant donné que votre rendu holographique est effectué directement dans l’affichage immersif, vous éviterez toute restriction xaml sur ce rendu.

L’utilisation de la mémoire compte à la fois pour le processeur et le GPU. Direct3D 11 peut permuter la mémoire graphique virtuelle, mais il peut ne pas être en mesure d’échanger une partie ou la totalité des ressources GPU XAML, et il peut y avoir un impact notable sur les performances. Quoi qu’il en soit, le fait de ne pas charger les fonctionnalités XAML dont vous n’avez pas besoin laisse plus de place à votre application et offre une meilleure expérience.

Flux de travail de basculement de vue XAML

Le flux de travail d’une application qui passe directement du mode XAML au mode immersif est le suivant :

  • L’application démarre dans la vue XAML 2D.
  • La séquence de démarrage XAML de l’application détecte si le système actuel prend en charge le rendu holographique :
  • Si c’est le cas, l’application crée la vue immersive et la place immédiatement au premier plan. Le chargement XAML est ignoré pour tout ce 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. Si l’application utilise XAML pour l’entrée au clavier, cette page d’entrée doit toujours être créée.
  • Si ce n’est pas le cas, la vue XAML peut continuer à fonctionner comme d’habitude.

Conseil pour le rendu des graphiques dans les deux affichages

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 qui peut fonctionner avec les deux vues. Le convertisseur doit être un instance accessible à partir des deux affichages, et il doit basculer entre le rendu 2D et le rendu holographique. De cette façon, les ressources GPU ne se chargent qu’une seule fois, ce qui réduit les temps de chargement, l’impact sur la mémoire et la quantité de ressources échangées lors du changement de vue.