Uso de XAML con aplicaciones de DirectX holográficas
Nota
Este artículo se relaciona con las API nativas heredadas de WinRT. En el caso de los nuevos proyectos de aplicaciones nativas, se recomienda usar la API de OpenXR.
En este tema se explica el impacto de cambiar entre las vistas XAML 2D y las vistas envolventes en la aplicación DirectX y cómo hacer un uso eficaz de una vista XAML y una vista envolvente.
Introducción a la conmutación de vistas XAML
En HoloLens, una aplicación inmersiva que puede mostrar posteriormente una vista XAML 2D debe inicializar esa vista XAML primero y cambiar inmediatamente a una vista inmersiva desde allí. XAML se cargará antes de que la aplicación pueda hacer cualquier cosa, lo que agrega un pequeño aumento al tiempo de inicio. XAML seguirá ocupando espacio de memoria en el proceso de la aplicación mientras permanece en segundo plano. La cantidad de retraso de inicio y uso de memoria depende de lo que hace la aplicación con XAML antes de cambiar a la vista nativa. Si no haces nada en el código de inicio XAML al principio, excepto iniciar la vista inmersiva, el impacto debe ser menor. Además, dado que la representación holográfica se realiza directamente en la vista envolvente, evitarás restricciones relacionadas con XAML en esa representación.
Recuentos de uso de memoria para CPU y GPU. Direct3D 11 puede intercambiar memoria de gráficos virtuales, pero es posible que no pueda intercambiar algunos o todos los recursos de GPU XAML y puede haber un impacto notable en el rendimiento. En cualquier caso, no cargar ninguna característica XAML que no necesite dejará más espacio para la aplicación y proporcionará una mejor experiencia.
Flujo de trabajo de cambio de vista XAML
El flujo de trabajo de una aplicación que va directamente desde XAML al modo inmersivo es similar al siguiente:
- La aplicación se inicia en la vista XAML 2D.
- La secuencia de inicio XAML de la aplicación detecta si el sistema actual admite la representación holográfica:
- Si es así, la aplicación crea la vista inmersiva y la lleva al primer plano inmediatamente. La carga de XAML se omite para todo lo que no sea necesario en Windows Mixed Reality dispositivos, incluidas las clases de representación y la carga de recursos en la vista XAML. Si la aplicación usa XAML para la entrada del teclado, esa página de entrada todavía debe crearse.
- Si no es así, la vista XAML puede continuar con el negocio como de costumbre.
Sugerencia para representar gráficos en ambas vistas
Si la aplicación necesita implementar cierta cantidad de representación en DirectX para la vista XAML en Windows Mixed Reality, lo más probable es crear un representador que pueda trabajar con ambas vistas. El representador debe ser una instancia a la que se pueda acceder desde ambas vistas y debe cambiar entre 2D y la representación holográfica. De este modo, los recursos de GPU solo se cargan una vez, lo que reduce los tiempos de carga, el impacto en la memoria y la cantidad de recursos intercambiados al cambiar de vistas.