共用方式為


IHolographicCameraInterop 介面 (windows.graphics.holographic.interop.h)

IHolographicCameraInterop介面是 nano-COM 介面,用來為HolographicCamera Windows 執行階段 物件建立 Direct3D 12 背景緩衝區資源。 這是搭配使用 Direct3D 12 與 Windows Mixed Reality 的初始化步驟。 此介面也可讓您的應用程式先取得內容緩衝區的擁有權以供轉譯,再使用 HolographicCameraRenderingParametersInterop 介面認可這些緩衝區。

您的應用程式可以使用這個介面,使用 Direct3D 12 初始化全像攝影轉譯。 Nano-COM 允許直接將 Direct3D 12 物件的指標當作 API 呼叫的參數傳遞,而不是使用Windows 執行階段容器物件。

您的應用程式會管理自己的全像攝影緩衝區集區,以作為每個 HolographicCamera的轉譯目標 (背景緩衝區) 。 它可以視需要建立額外的緩衝區,以繼續順暢地轉譯。 在大部分的裝置上,這將會是三或四個表面。 您的應用程式應該從集區中至少兩個緩衝區開始。 您的應用程式可以藉由尋找嘗試立即取得先前認可給簡報的緩衝區失敗,以動態偵測何時需要建立新的緩衝區。 您的應用程式必須認可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 Mixed Reality Direct3D 12 應用程式範本,其中包含標頭中 Windows.Graphics.Holographic.Interop.h 提供的大部分 API 的重複使用程式碼。

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)
標頭 windows.graphics.holographic.interop.h