Uso di XAML con app DirectX olografiche

Nota

Questo articolo è correlato alle API native WinRT legacy. Per i nuovi progetti di app native, è consigliabile usare l'API OpenXR.

Questo argomento illustra l'impatto del passaggio tra visualizzazioni XAML 2D e visualizzazioni immersive nell'app DirectX e come usare in modo efficiente sia una visualizzazione XAML che una visualizzazione immersiva.

Panoramica del cambio di visualizzazione XAML

In HoloLens, un'app immersiva che potrebbe visualizzare in un secondo momento una visualizzazione XAML 2D deve inizializzare prima la visualizzazione XAML e passare immediatamente a una visualizzazione immersiva da questa posizione. XAML verrà caricato prima che l'app possa eseguire qualsiasi operazione, che aggiunge un piccolo aumento al tempo di avvio. XAML continuerà a occupare spazio di memoria nel processo dell'app mentre rimane in background. La quantità di ritardo di avvio e l'utilizzo della memoria dipendono dalle operazioni eseguite dall'app con XAML prima di passare alla visualizzazione nativa. Se non si esegue alcuna operazione nel codice di avvio XAML all'inizio, ad eccezione dell'avvio della visualizzazione immersiva, l'impatto dovrebbe essere minore. Inoltre, poiché il rendering olografico viene eseguito direttamente nella visualizzazione immersiva, eviterai eventuali restrizioni relative a XAML per tale rendering.

L'utilizzo della memoria viene conteggiato sia per LA CPU che per la GPU. Direct3D 11 può scambiare memoria grafica virtuale, ma potrebbe non essere in grado di scambiare alcune o tutte le risorse GPU XAML e potrebbe verificarsi un notevole riscontro delle prestazioni. In entrambi i casi, non caricare funzionalità XAML non necessarie lascerà più spazio per la tua app e offrirà un'esperienza migliore.

Flusso di lavoro di cambio visualizzazione XAML

Il flusso di lavoro per un'app che passa direttamente da XAML alla modalità immersiva è simile al seguente:

  • L'app viene avviata nella visualizzazione XAML 2D.
  • La sequenza di avvio XAML dell'app rileva se il sistema corrente supporta il rendering olografico:
  • In tal caso, l'app crea la visualizzazione immersiva e la porta immediatamente in primo piano. Il caricamento XAML viene ignorato per qualsiasi elemento non necessario nei dispositivi Windows Mixed Reality, incluse le classi di rendering e il caricamento degli asset nella visualizzazione XAML. Se l'app usa XAML per l'input da tastiera, tale pagina di input deve comunque essere creata.
  • In caso contrario, la visualizzazione XAML può continuare a usare il business come di consueto.

Suggerimento per il rendering della grafica in entrambe le visualizzazioni

Se l'app deve implementare una quantità di rendering in DirectX per la visualizzazione XAML in Windows Mixed Reality, è consigliabile creare un renderer che possa funzionare con entrambe le visualizzazioni. Il renderer deve essere un'istanza accessibile da entrambe le visualizzazioni e deve passare dal rendering 2D a quello olografico. In questo modo gli asset GPU vengono caricati una sola volta, riducendo i tempi di caricamento, l'impatto sulla memoria e la quantità di risorse scambiate quando si cambiano le visualizzazioni.