Utilização de XAML com aplicações holográficas DirectX

Nota

Este artigo diz respeito ao legado WinRT native APIs. Para novos projetos de aplicações nativas, recomendamos a utilização da API OpenXR.

Este tópico explica o impacto da troca entre vistas 2D XAML e vistas imersivas na sua aplicação DirectX, e como fazer uso eficiente de uma visão XAML e uma visão imersiva.

Visão de visão XAML mudando a visão geral

No HoloLens, uma aplicação imersiva que poderá posteriormente apresentar uma vista XAML 2D precisa de inicializar essa vista XAML primeiro e mudar imediatamente para uma visão imersiva a partir daí. O XAML carregará antes que a sua aplicação possa fazer qualquer coisa, o que adiciona um pequeno aumento ao seu tempo de arranque. O XAML continuará a ocupar espaço de memória no seu processo de aplicação enquanto permanece em segundo plano. A quantidade de atraso de arranque e uso de memória depende do que a sua aplicação faz com o XAML antes de mudar para a vista nativa. Se não fizer nada no seu código de arranque XAML no início, exceto iniciar a sua visão imersiva, o impacto deve ser menor. Além disso, como a sua renderização holográfica é feita diretamente para a vista imersiva, evitará quaisquer restrições relacionadas com xAML nessa renderização.

O uso da memória conta tanto para CPU como para a GPU. O Direct3D 11 pode trocar a memória de gráficos virtuais, mas pode não ser capaz de trocar alguns ou todos os recursos da GPU XAML, e pode haver um sucesso de desempenho notável. Seja como for, não carregar quaisquer funcionalidades XAML de que não precise, deixará mais espaço para a sua aplicação e proporcionará uma melhor experiência.

Fluxo de trabalho de comutação de visão XAML

O fluxo de trabalho para uma aplicação que vai diretamente de XAML para o modo imersivo é assim:

  • A aplicação começa na vista 2D XAML.
  • A sequência de arranque XAML da aplicação deteta se o sistema atual suporta renderização holográfica:
  • Em caso afirmativo, a aplicação cria a vista imersiva e traz-a imediatamente para primeiro plano. O carregamento de XAML é ignorado para qualquer coisa que não seja necessário em dispositivos Windows Mixed Reality, incluindo quaisquer classes de renderização e carregamento de ativos na vista XAML. Se a aplicação estiver a utilizar o XAML para entrada no teclado, essa página de entrada ainda deve ser criada.
  • Caso contrário, a vista XAML pode continuar com o negócio como de costume.

Dica para renderizar gráficos em ambas as vistas

Se a sua aplicação precisar de implementar alguma quantidade de renderização em DirectX para a vista XAML em Windows Mixed Reality, a sua melhor aposta é criar um renderizador que possa funcionar com ambas as vistas. O renderizador deve ser um caso que possa ser acedido a partir de ambos os pontos de vista, e deve alternar entre renderização 2D e holográfica. Desta forma, os ativos da GPU só carregam uma vez, o que reduz os tempos de carga, o impacto da memória e a quantidade de recursos trocados ao mudar de vista.