Holographic DirectX アプリでの XAML の使用Using XAML with holographic DirectX apps

このトピックでは、DirectX アプリでの2D XAML ビューとイマーシブビューの切り替えの影響と、xaml ビューとイマーシブビューの両方を効率的に使用する方法について説明します。This topic explains the impact of switching between 2D XAML views and immersive views in your DirectX app, and how to make efficient use of both a XAML view and immersive view.

XAML ビューの切り替えの概要XAML view switching overview

HoloLens では、一般に 2D XAML ビューを表示できるイマーシブアプリでは、最初に XAML ビューを初期化し、そこからすぐにイマーシブビューに切り替える必要があります。On HoloLens, a generally immersive app that may later display a 2D XAML view must initialize that XAML view first and immediately switch to an immersive view from there. これは、アプリが何かを実行する前に XAML が読み込まれることを意味します。This means XAML will load before your app can do anything. 結果として、起動時間がわずかに増加し、XAML はバックグラウンドでアプリケーションプロセスのメモリ領域を占有し続けます。起動時の遅延とメモリの使用量は、ネイティブビューに切り替える前に、アプリが XAML で何を実行しているかによって異なります。As a result, there will be a small increase in your startup time, and XAML will continue to occupy memory space in your app process while it resides in the background; the amount of startup delay and memory usage depends on what your app does with XAML before switching to the native view. XAML の最初のコードで何も実行しない場合は、まず、[イマーシブビューを開始] を除き、影響を軽微にする必要があります。If you do nothing in your XAML start up code at first except start your immersive view, the impact should be minor. また、holographic のレンダリングは、イマーシブビューに直接行われるため、そのレンダリングには XAML 関連の制限はありません。Also, because your holographic rendering is done directly to the immersive view, you will avoid any XAML-related restrictions on that rendering.

CPU と GPU の両方のメモリ使用量がカウントされることに注意してください。Note that the memory usage counts for both CPU and GPU. Direct3D 11 は仮想グラフィックスメモリをスワップできますが、一部またはすべての XAML GPU リソースをスワップできない可能性があり、パフォーマンスが著しく低下する可能性があります。Direct3D 11 is able to swap virtual graphics memory, but it might not be able to swap out some or all of the XAML GPU resources, and there might be a noticeable performance hit. どちらの方法でも、不要な XAML 機能を読み込まないと、アプリのためのスペースが増え、エクスペリエンスが向上します。Either way, not loading any XAML features you don't need will leave more room for your app and provide a better experience.

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

XAML からイマーシブモードに直接移動するアプリのワークフローは、次のようになります。The workflow for an app that goes directly from XAML to immersive mode is like so:

  • アプリが 2D XAML ビューで開始されます。The app starts up in the 2D XAML view.
  • アプリの XAML スタートアップシーケンスは、現在のシステムが holographic のレンダリングをサポートしているかどうかを検出します。The app’s XAML startup sequence detects if the current system supports holographic rendering:
  • その場合は、アプリによってイマーシブビューが作成され、すぐに前面に移動します。If so, the app creates the immersive view and brings it to the foreground right away. Xaml の読み込みは、XAML ビューでのレンダリングクラスや資産の読み込みなど、Windows Mixed Reality デバイスでは不要なものに対してスキップされます。XAML loading is skipped for anything not necessary on Windows Mixed Reality devices, including any rendering classes and asset loading in the XAML view. アプリでキーボード入力に XAML が使用されている場合でも、その入力ページは作成されます。If the app is using XAML for keyboard input, that input page should still be created.
  • それ以外の場合、XAML ビューは通常どおりビジネスで続行できます。If not, the XAML view can proceed with business as usual.

両方のビューでグラフィックスをレンダリングするためのヒントTip for rendering graphics across both views

Windows Mixed Reality の XAML ビューに対して、DirectX で一定量のレンダリングを実装する必要がある場合、最良の方法は、両方のビューを使用できるレンダラーを1つ作成することです。If your app needs to implement some amount of rendering in DirectX for the XAML view in Windows Mixed Reality, your best bet is to create one renderer that can work with both views. レンダラーは、両方のビューからアクセスできる1つのインスタンスである必要があり、2D と holographic のレンダリングを切り替えることができる必要があります。The renderer should be one instance that can be accessed from both views, and it should be able to switch between 2D and holographic rendering. これにより、GPU 資産は一度だけ読み込まれます。これにより、読み込み時間、メモリの影響、およびビューを切り替えるときにスワップされるリソースの量が減少します。That way GPU assets are only loaded once - this reduces load times, memory impact, and the amount of resources to be swapped when switching views.