Interfaccia IHolographicQuadLayerInterop (windows.graphics.holographic.interop.h)

L'interfaccia IHolographicQuadLayerInterop è un'interfaccia nano-COM, usata per creare buffer di contenuto Direct3D 12 per un oggetto holographicQuadLayer Windows Runtime. Si tratta di un passaggio di inizializzazione per l'uso di Direct3D 12 con Windows Mixed Reality livelli quad. Consente inoltre all'applicazione di acquisire la proprietà dei buffer di contenuto per il rendering, prima di eseguirne il commit con l'interfaccia IHolographicQuadLayerUpdateParametersInterop .

L'applicazione può usare IHolographicQuadLayerInterop per inizializzare le risorse del buffer del contenuto Direct3D 12 per i livelli quad olografici. Nano-COM consente di passare i puntatori agli oggetti Direct3D 12 direttamente come parametri per le chiamate API, anziché usare un oggetto contenitore Windows Runtime.

L'applicazione gestisce il proprio pool di risorse del buffer del contenuto olografico. Può creare buffer aggiuntivi in base alle esigenze per continuare a eseguire il rendering senza problemi. Nella maggior parte dei dispositivi si tratta di tre o quattro buffer. L'applicazione deve iniziare con almeno due buffer nel pool. L'applicazione può rilevare dinamicamente quando deve creare un nuovo buffer cercando tentativi non riusciti di acquisire immediatamente buffer di cui è stato eseguito il commit in precedenza per la presentazione. Un buffer del contenuto del livello quad continuerà a essere presentato ogni frame fino a quando non viene eseguito il commit di un nuovo buffer.

Un buffer creato da un oggetto HolographicQuadLayer può essere usato solo con tale oggetto. Deve essere rilasciato quando viene rilasciato HolographicQuadLayer o quando il dispositivo Direct3D 12 deve essere ricreato, indipendentemente da ciò che avviene per primo. Il buffer non deve trovarsi nella pipeline GPU quando viene rilasciato. È consigliabile usare i recinti Direct3D 12 per assicurarsi che questa condizione venga soddisfatta prima del rilascio dell'oggetto buffer.

Ereditarietà

L'interfaccia IHolographicQuadLayerInterop eredita dall'interfaccia IInspectable .

Metodi

L'interfaccia IHolographicQuadLayerInterop include questi metodi.

 
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource

La funzione IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource acquisisce una risorsa buffer Direct3D 12.
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout

La funzione IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout acquisisce una risorsa buffer Direct3D 12, con un timeout facoltativo.
IHolographicQuadLayerInterop::CreateDirect3D12ContentBufferResource

Crea una risorsa Direct3D 12 da usare come buffer di contenuto per il livello.
IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource

La funzione IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource crea un buffer del contenuto della risorsa Direct3D 12 per la fotocamera.
IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource

La funzione IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource annulla l'acquisizione di una risorsa buffer Direct3D 12.

Commenti

Per usare questa interfaccia in C++/WinRT, QueryInterface per l'interfaccia IHolographicQuadLayerInterop dall'oggetto HolographicQuadLayer .

Si noti che è possibile usare l'API HolographicViewConfiguration per determinare le opzioni disponibili per il formato del buffer.

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]));
}

Per usare questa interfaccia in C++/CX, eseguire il cast dell'oggetto HolographicQuadLayer su IInspectable*. Quindi QueryInterface per l'interfaccia IHolographicQuadLayerInterop dal puntatore IInspectable .

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]));
}

Requisiti

Requisito Valore
Client minimo supportato Windows 10 versione 2004 (10.0; Build 19041)
Server minimo supportato Windows Server, versione 2004 (10.0; Build 19041)
Intestazione windows.graphics.holographic.interop.h