Utilizar XAML com aplicações Holographic DirectX
Nota
Este artigo está relacionado com as APIs nativas do WinRT legadas. Para novos projetos de aplicações nativas, recomendamos a utilização da API OpenXR.
Este tópico explica o impacto de alternar entre vistas XAML 2D e vistas imersivas na sua aplicação DirectX e como fazer uma utilização eficiente de uma vista XAML e de uma vista envolvente.
Descrição geral da mudança da vista XAML
No HoloLens, uma aplicação envolvente que poderá apresentar posteriormente uma vista XAML 2D tem de inicializar primeiro essa vista XAML e mudar imediatamente para uma vista imersiva a partir daí. O XAML será carregado antes de a sua aplicação poder fazer qualquer coisa, o que adiciona um pequeno aumento ao tempo de arranque. O XAML continuará a ocupar espaço de memória no processo da aplicação enquanto permanece em segundo plano. A quantidade de atraso de arranque e utilização da 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 código de arranque XAML no início, exceto iniciar a vista envolvente, o impacto deve ser menor. Além disso, como a composição holográfica é feita diretamente para a vista envolvente, evitará quaisquer restrições relacionadas com XAML nessa composição.
A utilização da memória conta tanto para a 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 desempenho notável. De qualquer forma, não carregar quaisquer funcionalidades XAML de que não precisa irá deixar mais espaço para a sua aplicação e proporcionar uma melhor experiência.
Fluxo de trabalho de mudança de vista XAML
O fluxo de trabalho de uma aplicação que vai diretamente do XAML para o modo envolvente é do seguinte modo:
- A aplicação é iniciada na vista XAML 2D.
- A sequência de arranque XAML da aplicação deteta se o sistema atual suporta a composição holográfica:
- Se for o caso, a aplicação cria a vista envolvente e coloca-a imediatamente em primeiro plano. O carregamento de XAML é ignorado para tudo o que não for necessário em dispositivos Windows Mixed Reality, incluindo quaisquer classes de composição e carregamento de recursos na vista XAML. Se a aplicação estiver a utilizar XAML para a introdução de teclado, essa página de entrada ainda deve ser criada.
- Caso contrário, a vista XAML pode continuar com os negócios como habitualmente.
Sugestão para compor gráficos em ambas as vistas
Se a sua aplicação precisar de implementar alguma quantidade de composição no DirectX para a vista XAML no Windows Mixed Reality, a melhor opção é criar um compositor que possa funcionar com ambas as vistas. O compositor deve ser uma instância que pode ser acedida a partir de ambas as vistas e deve alternar entre a composição 2D e holográfica. Desta forma, os recursos da GPU só são carregados uma vez, o que reduz os tempos de carga, o impacto na memória e a quantidade de recursos trocados ao mudar de vista.