IHolographicCameraInterop インターフェイス (windows.graphics.holographic.interop.h)
IHolographicCameraInterop インターフェイスは nano-COM インターフェイスであり、HolographicCamera Windows ランタイム オブジェクトのDirect3D 12バック バッファー リソースを作成するために使用されます。 これは、Windows Mixed RealityでDirect3D 12を使用するための初期化手順です。 このインターフェイスを使用すると、 HolographicCameraRenderingParametersInterop インターフェイスを使用してコンテンツ バッファーをコミットする前に、アプリケーションでレンダリング用のコンテンツ バッファーの所有権を取得することもできます。
アプリケーションでは、このインターフェイスを使用して、Direct3D 12を使用してホログラフィック レンダリングを初期化できます。 Nano-COM を使用すると、Windows ランタイムコンテナー オブジェクトを使用する代わりに、Direct3D 12 オブジェクトへのポインターを API 呼び出しのパラメーターとして直接渡すことができます。
アプリケーションは、各 HolographicCamera のレンダー ターゲット (バック バッファー) として使用するために、ホログラフィック バッファー リソースの独自のプールを管理します。 レンダリングをスムーズに続行するために、必要に応じて追加のバッファーを作成できます。 ほとんどのデバイスでは、これは 3 つまたは 4 つのサーフェスになります。 アプリケーションは、プール内の少なくとも 2 つのバッファーから開始する必要があります。 アプリケーションは、プレゼンテーション用に以前にコミットされたバッファーをすぐに取得しようとして失敗した試行を探すことによって、新しいバッファーを作成する必要があるときに動的に検出できます。 アプリケーションでは、そのカメラでプライマリ レイヤーが無効になっていない限り、HolographicFrame に含まれる HolographicCamera のバッファーをコミットする必要があります。この場合、アプリケーションはそのカメラのバッファーをコミットしないでください。
HolographicCamera オブジェクトによって作成されたバッファーは、そのオブジェクトでのみ使用できます。 HolographicCamera がリリースされたとき、またはDirect3D 12 デバイスを再作成する必要がある場合は、どちらか早い方にリリースする必要があります。 バッファーが解放されるときに、バッファーが GPU パイプライン内に存在しないようにする必要があります。バッファー オブジェクトを解放する前に、この条件を確実に満たすには、Direct3D 12フェンスを使用する必要があります。
継承
IHolographicCameraInterop インターフェイスは、IInspectable インターフェイスから継承します。
メソッド
IHolographicCameraInterop インターフェイスには、これらのメソッドがあります。
IHolographicCameraInterop::AcquireDirect3D12BufferResource IHolographicCameraInterop::AcquireDirect3D12BufferResource 関数は、Direct3D 12 バッファー リソースを取得します。 |
IHolographicCameraInterop::AcquireDirect3D12BufferResourceWithTimeout IHolographicCameraInterop::AcquireDirect3D12BufferResourceWithTimeout 関数は、オプションのタイムアウトでDirect3D 12バッファー リソースを取得します。 |
IHolographicCameraInterop::CreateDirect3D12BackBufferResource カメラのコンテンツ バッファーとして使用するDirect3D 12 リソースを作成します。 |
IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource は、カメラのコンテンツ バッファーとして使用するDirect3D 12 リソースを作成します。 |
IHolographicCameraInterop::UnacquireDirect3D12BufferResource IHolographicCameraInterop::UnacquireDirect3D12BufferResource 関数は、Direct3D 12 バッファー リソースを取得解除します。 |
解説
C++/WinRT でこのインターフェイスを使用するには、HolographicCamera オブジェクトの IHolographicCameraInterop インターフェイスの QueryInterface を使用します。
winrt::com_ptr<IHolographicCameraInterop> spCameraInterop {
m_holographicCamera.as<IHolographicCameraInterop>() };
D3D12_RESOURCE_DESC bufferDesc { };
bufferDesc.Format =
SelectFormatUsingHolographicViewConfiguration(
m_holographicCamera.ViewConfiguration());
bufferDesc.SampleDesc.Count = 1;
bufferDesc.SampleDesc.Quality = 0;
bufferDesc.MipLevels = 1;
bufferDesc.Width = static_cast<UINT64>(
m_holographicCamera.ViewConfiguration().RenderTargetSize().Width);
bufferDesc.Height = static_cast<UINT64>(
m_holographicCamera.ViewConfiguration().RenderTargetSize().Height);
winrt::check_hresult(
spCameraInterop->CreateDirect3D12BackBufferResource(
m_deviceResources->GetD3D12Device(),
&bufferDesc,
&m_D3D12BackBuffer[m_contentBufferIndex]));
HolographicViewConfiguration API を使用して、バッファー形式に使用できるオプションを決定し、対応する出力 (HolographicDisplay など) のレンダー ターゲット サイズに関する情報を取得できます。 アプリケーションで、HolographicCamera の既定のレンダー ターゲット サイズからDirect3D 12 バッファーのバッファー サイズを変更する必要がある場合は、HolographicViewConfiguration::RequestRenderTargetSize メソッドを使用して新しいレンダー ターゲット サイズを要求し、そのメソッドによって返されるサイズを使用してバッファーを作成するか、任意のサイズを選択して、次の段落で説明するようにビューポートをオーバーライドする必要があります。
Direct3D 12 アプリケーションでは、アプリケーションによって個別に選択されたビューポート サイズを使用できます。 その場合は、各フレームの HolographicCameraPose.OverrideViewport メソッドを呼び出して、レンダリングに使用されるビューポートについてプラットフォームに通知する必要があります。
次のコードの抜粋は、ヘッダーで提供Windows.Graphics.Holographic.Interop.h
されるほとんどの API の定型コードを含む、Windows Mixed Reality Direct3D 12 アプリ テンプレートからの抜粋です。
winrt::com_ptr<IHolographicCameraInterop> spCameraInterop =
m_holographicCamera.as<IHolographicCameraInterop>();
winrt::check_hresult(
spCameraInterop->CreateDirect3D12BackBufferResource(
spD3D12Device.get(),
&bufferDesc,
m_spD3D12BackBuffer[bufferSlot].put()));
要件
サポートされている最小のクライアント | Windows 10バージョン 2004 (10.0;ビルド 19041) |
サポートされている最小のサーバー | Windows Server バージョン 2004 (10.0;ビルド 19041) |
Header | windows.graphics.holographic.interop.h |