XAML とホログラフィック DirectX アプリの使用

Note

この記事は、従来のWinRTネイティブAPIに関連します。 新しいネイティブ アプリ プロジェクトの場合は、OpenXR API を使用することをお勧めします。

このトピックでは、DirectX アプリで 2D XAML ビューとイマーシブ ビューを切り替えた場合の影響と、XAML ビューとイマーシブ ビューの両方を効率的に使用する方法について説明します。

XAML ビューの切り替えの概要

HoloLens 上の、2D XAML ビューを後で表示する可能性のあるイマーシブ アプリでは、最初にその XAML ビューを初期化し、そこからすぐにイマーシブ ビューに切り替える必要があります。 アプリで何かを行うには、事前に XAML を読み込む必要があります。これにより、起動時間が少し長くなります。 XAML がバックグラウンドにとどまっている間、それによってアプリ プロセスのメモリ領域は占有され続けます。 起動遅延の長さとメモリ使用量は、ネイティブ ビューに切り替わる前にアプリが XAML を使用して行う内容に依存します。 最初に XAML スタートアップ コードでイマーシブ ビューを開始する以外に何もしない場合、影響は軽微になります。 また、ホログラフィック レンダリングはイマーシブ ビューに対して直接行われるため、そのレンダリング時に XAML 関連の制限を回避できます。

CPU と GPU の両方のメモリ使用量がカウントされます。 Direct3D 11 では、仮想グラフィックス メモリはスワップできますが、XAML GPU リソースについてはその一部またはすべてをスワップできない可能性があり、パフォーマンスが著しく低下するおそれがあります。 いずれにせよ、不要な XAML 機能を読み込まないことで、アプリ用のスペースが増え、エクスペリエンスが向上します。

XAML ビューの切り替えワークフロー

XAML からイマーシブ モードに直接切り替わるアプリのワークフローは次のようになります。

  • アプリは 2D XAML ビューで起動します。
  • 現在のシステムでホログラフィック レンダリングがサポートされているかどうかは、アプリの XAML 開始シーケンスによって検出されます。
  • その場合、アプリによってイマーシブ ビューが作成され、それがすぐにフォアグラウンドに表示されます。 XAML ビューでのレンダリング クラスやアセットの読み込みなど、Windows Mixed Reality デバイスで不要なものについては XAML の読み込みがスキップされます。 アプリでキーボード入力に XAML が使用されている場合、その入力ページも作成されます。
  • そうでない場合、XAML ビューで通常どおりビジネスを続行できます。

両方のビューでグラフィックスをレンダリングする場合のヒント

アプリで、Windows Mixed Reality の XAML ビューのために DirectX で、ある程度のレンダリングを実装する必要がある場合は、両方のビューを使用できるレンダラーを 1 つ作成するのが最善の策です。 レンダラーは、両方のビューからアクセスできる 1 つのインスタンスとする必要があり、2D レンダリングとホログラフィック レンダリング間で切り替える必要があります。 このように、GPU 資産の読み込みは 1 回だけなので、読み込み時間、メモリへの影響、およびビューの切り替え時にスワップされるリソースの量が削減されます。