次の方法で共有


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

注:

この記事は、従来の 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 読み込みは、XAML ビュー内のレンダリング クラスやアセットの読み込みなど、Windows Mixed Realityデバイスで不要なものについてはスキップされます。 アプリがキーボード入力に XAML を使用している場合は、その入力ページを作成する必要があります。
  • そうでない場合、XAML ビューは通常どおりビジネスを続行できます。

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

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