共用方式為


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

IHolographicQuadLayerInterop 介面是 nano-COM 介面,用來為 HolographicQuadLayer Windows 執行階段 物件建立 Direct3D 12 內容緩衝區。 這是搭配 Windows Mixed Reality 四層使用 Direct3D 12 的初始化步驟。 它也可讓您的應用程式先取得內容緩衝區的擁有權以供轉譯,再使用 IHolographicQuadLayerUpdateParametersInterop 介面加以認可。

您的應用程式可以使用 IHolographicQuadLayerInterop 來初始化全像攝影四層的 Direct3D 12 內容緩衝區資源。 Nano-COM 允許直接將 Direct3D 12 物件的指標當作 API 呼叫的參數傳遞,而不是使用 Windows 執行階段 容器物件。

您的應用程式會管理自己的全像攝影內容緩衝區資源集區。 它可以視需要建立額外的緩衝區,以繼續順暢地轉譯。 在大部分的裝置上,這將會是三或四個緩衝區。 您的應用程式應該從集區中至少兩個緩衝區開始。 您的應用程式可以藉由尋找嘗試立即取得先前認可給簡報的緩衝區失敗,以動態偵測何時需要建立新的緩衝區。 四層內容緩衝區會繼續呈現每個畫面,直到認可新的緩衝區為止。

HolographicQuadLayer 物件所建立的緩衝區只能與該物件搭配使用。 當 HolographicQuadLayer 發行時,或需要重新建立 Direct3D 12 裝置時,就應該釋出它,只要先發生。 釋放緩衝區時,緩衝區不得位於 GPU 管線中—應該使用 Direct3D 12 柵欄來確保在釋放緩衝區物件之前符合此條件。

繼承

IHolographicQuadLayerInterop 介面繼承自 IInspectable 介面。

方法

IHolographicQuadLayerInterop 介面具有這些方法。

 
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource

IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource 函式會取得 Direct3D 12 緩衝區資源。
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout

IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout 函式會取得 Direct3D 12 緩衝區資源,並具有選擇性逾時。
IHolographicQuadLayerInterop::CreateDirect3D12ContentBufferResource

建立 Direct3D 12 資源,以作為層次的內容緩衝區使用。
IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource

IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource 函式會建立相機的 Direct3D 12 資源內容緩衝區。
IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource

IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource 函式會取消取得 Direct3D 12 緩衝區資源。

備註

若要在 C++/WinRT 中使用這個介面,請從 HolographicQuadLayer 物件使用 IHolographicQuadLayerInterop 介面的 QueryInterface

請注意,您可以使用 HolographicViewConfiguration API 來判斷緩衝區格式的可用選項。

m_quadLayer = HolographicQuadLayer{ {1024, 1024} };
winrt::com_ptr<IHolographicQuadLayerInterop> quadLayerInterop{
    m_quadLayer.as<IHolographicQuadLayerInterop>() };

// Create/acquire buffer.
if (!m_D3D12ContentBuffer[m_contentBufferIndex])
{
    D3D12_RESOURCE_DESC bufferDesc{ sourceDesc };
    bufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    bufferDesc.SampleDesc.Count = 1;
    bufferDesc.SampleDesc.Quality = 0;
    bufferDesc.MipLevels = 1;

    winrt::check_hresult(
        quadLayerInterop->CreateDirect3D12ContentBufferResource(
            m_deviceResources->GetD3D12Device(),
            &bufferDesc,
            &m_D3D12ContentBuffer[m_contentBufferIndex]));
}

若要在 C++/CX 中使用這個介面,請將 HolographicQuadLayer 物件轉換成 IInspectable*。 然後,IInspectable 指標中 IHolographicQuadLayerInterop 介面的 QueryInterface

m_quadLayer = ref new HolographicQuadLayer();
Microsoft::WRL::ComPtr<IHolographicQuadLayerInterop> quadLayerInterop;
{
    Microsoft::WRL::ComPtr<IInspectable> iInspectable = reinterpret_cast<IInspectable*>(m_quadLayer);
    DX::ThrowIfFailed(iInspectable.As(&quadLayerInterop));
}

// Create/acquire buffer.
if (!m_D3D12ContentBuffer[m_contentBufferIndex])
{
    D3D12_RESOURCE_DESC bufferDesc = sourceDesc;
    bufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    bufferDesc.SampleDesc.Count = 1;
    bufferDesc.SampleDesc.Quality = 0;
    bufferDesc.MipLevels = 1;

    DX::ThrowIfFailed(quadLayerInterop->CreateDirect3D12ContentBufferResource(
        m_deviceResources->GetD3D12Device(),
        &bufferDesc,
        &m_D3D12ContentBuffer[m_contentBufferIndex]));
}

規格需求

需求
最低支援的用戶端 Windows 10 版本 2004 (10.0;組建 19041)
最低支援的伺服器 Windows Server 版本 2004 (10.0;組建 19041)
標頭 windows.graphics.holographic.interop.h