Поделиться через


Использование 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 загружаются только один раз, что сокращает время загрузки, влияние на память и количество переключяемых ресурсов при переключении представлений.