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

L'interfaccia IHolographicCameraInterop è un'interfaccia nano-COM, usata per creare risorse back buffer Direct3D 12 per un oggetto HolographicCamera Windows Runtime. Si tratta di un passaggio di inizializzazione per l'uso di Direct3D 12 con Windows Mixed Reality. Questa interfaccia consente anche all'applicazione di acquisire la proprietà dei buffer di contenuto per il rendering, prima di eseguirne il commit con l'interfaccia HolographicCameraRenderingParametersInterop .

L'applicazione può usare questa interfaccia per inizializzare il rendering olografico usando Direct3D 12. 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 olografico da usare come destinazioni di rendering (buffer back) per ogni HolographicCamera. 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 superfici. 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. L'applicazione deve eseguire il commit di un buffer per un HolographicCamera incluso in HolographicFrame , a meno che il livello primario non sia disabilitato per la fotocamera, nel qual caso l'applicazione non deve eseguire il commit di un buffer per tale fotocamera.

Un buffer creato da un oggetto HolographicCamera può essere utilizzato solo con tale oggetto. Deve essere rilasciato quando viene rilasciato HolographicCamera o quando il dispositivo Direct3D 12 deve essere ricreato, indipendentemente da ciò che accade 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 IHolographicCameraInterop eredita dall'interfaccia IInspectable .

Metodi

L'interfaccia IHolographicCameraInterop include questi metodi.

 
IHolographicCameraInterop::AcquireDirect3D12BufferResource

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

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

Crea una risorsa Direct3D 12 da usare come buffer di contenuto per la fotocamera.
IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource

IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource crea una risorsa Direct3D 12 da usare come buffer di contenuto per la fotocamera.
IHolographicCameraInterop::UnacquireDirect3D12BufferResource

La funzione IHolographicCameraInterop::UnacquireDirect3D12BufferResource non acquisisce una risorsa buffer Direct3D 12.

Commenti

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

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

È possibile usare l'API HolographicViewConfiguration per determinare le opzioni disponibili per il formato del buffer e per acquisire informazioni sulle dimensioni della destinazione di rendering per l'output corrispondente, ad esempio HolographicDisplay. Se l'applicazione deve modificare le dimensioni del buffer per i buffer Direct3D 12 rispetto alle dimensioni predefinite della destinazione di rendering per HolographicCamera, deve richiedere una nuova dimensione di destinazione di rendering usando il metodo HolographicViewConfiguration::RequestRenderTargetSize e creare buffer usando le dimensioni restituite da tale metodo oppure scegliere una dimensione arbitraria ed eseguire l'override del riquadro di visualizzazione come descritto nel paragrafo seguente.

L'applicazione Direct3D 12 può usare una dimensione del riquadro di visualizzazione scelta indipendentemente dall'applicazione. In tal caso, è necessario chiamare il metodo HolographicCameraPose.OverrideViewport per informare la piattaforma del viewport usato per il rendering.

L'estratto di codice seguente è tratto dal modello di app Windows Mixed Reality Direct3D 12, che include il codice boilerplate per la maggior parte delle API fornite nell'intestazioneWindows.Graphics.Holographic.Interop.h.

winrt::com_ptr<IHolographicCameraInterop> spCameraInterop = 
    m_holographicCamera.as<IHolographicCameraInterop>();
winrt::check_hresult(
    spCameraInterop->CreateDirect3D12BackBufferResource(
        spD3D12Device.get(),
        &bufferDesc,
        m_spD3D12BackBuffer[bufferSlot].put()));

Requisiti

   
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