Использование XAML с голографическими приложениями DirectX
Примечание
Эта статья относится к устаревшим собственным API WinRT. Для новых проектов собственных приложений рекомендуется использовать API OpenXR.
В этом разделе объясняется влияние переключения между двумерными представлениями XAML и иммерсивными представлениями в приложении DirectX, а также объясняется, как эффективно использовать представление XAML и иммерсивное представление.
Обзор переключения представлений XAML
В HoloLens иммерсивное приложение, которое позже может отображать двухмерное представление XAML, должно сначала инициализировать это представление XAML и сразу же переключиться на иммерсивное представление. XAML загрузится, прежде чем приложение сможет что-либо сделать, что немного увеличит время запуска. XAML будет по-прежнему занимать место в памяти в процессе приложения, оставаясь в фоновом режиме. Объем задержки при запуске и использование памяти зависит от того, что приложение выполняет с ПОМОЩЬЮ XAML перед переходом в собственное представление. Если сначала в коде запуска XAML ничего не делать, кроме запуска иммерсивного представления, влияние должно быть незначительным. Кроме того, так как голографическая отрисовка выполняется непосредственно в иммерсивном представлении, вы сможете избежать ограничений, связанных с XAML.
Количество потребления памяти как для ЦП, так и для GPU. Direct3D 11 может переключать виртуальную графическую память, но не сможет переключить некоторые или все ресурсы GPU XAML, а также заметное снижение производительности. В любом случае, если вы не будете загружать не нужные функции XAML, вы получите больше места для вашего приложения и обеспечит более удобный интерфейс.
Рабочий процесс переключения представлений XAML
Рабочий процесс для приложения, которое переходит непосредственно из XAML в иммерсивный режим, выглядит следующим образом:
- Приложение запускается в представлении 2D XAML.
- Последовательность запуска xaml приложения определяет, поддерживает ли текущая система голографическую отрисовку:
- Если это так, приложение создает иммерсивное представление и сразу же выводит его на передний план. Загрузка XAML пропускается для всего, что не требуется на Windows Mixed Reality устройствах, включая любые классы отрисовки и загрузку ресурсов в представлении XAML. Если приложение использует XAML для ввода с помощью клавиатуры, необходимо создать страницу ввода.
- В противном случае представление XAML может продолжить работу в обычном режиме.
Совет по отрисовке графики в обоих представлениях
Если вашему приложению необходимо реализовать определенный объем отрисовки в DirectX для представления XAML в Windows Mixed Reality, лучше всего создать один отрисовщик, который может работать с обоими представлениями. Отрисовщик должен быть одним экземпляром, к которому можно получить доступ из обоих представлений, и переключаться между двумерной и голографической отрисовкой. Таким образом ресурсы GPU загружаются только один раз, что сокращает время загрузки, влияние на память и количество переключяемых ресурсов при переключении представлений.