Partager via


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

L’interface IHolographicQuadLayerInterop est une interface nano-COM, utilisée pour créer des mémoires tampons de contenu Direct3D 12 pour un objet HolographicQuadLayer Windows Runtime. Il s’agit d’une étape d’initialisation pour l’utilisation de Direct3D 12 avec Windows Mixed Reality couches quad. Il permet également à votre application d’acquérir la propriété des mémoires tampons de contenu pour le rendu, avant de les valider avec l’interface IHolographicQuadLayerUpdateParametersInterop .

Votre application peut utiliser IHolographicQuadLayerInterop pour initialiser les ressources de mémoire tampon de contenu Direct3D 12 pour les quatre couches holographiques. Nano-COM permet de passer directement des pointeurs vers des objets Direct3D 12 en tant que paramètres pour les appels d’API, au lieu d’utiliser un objet conteneur Windows Runtime.

Votre application gère son propre pool de ressources de mémoire tampon de contenu holographique. Il peut créer des mémoires tampons supplémentaires si nécessaire afin de continuer le rendu en douceur. Sur la plupart des appareils, il s’agit de trois ou quatre mémoires tampons. Votre application doit commencer avec au moins deux mémoires tampons dans le pool. Votre application peut détecter dynamiquement quand elle a besoin de créer une mémoire tampon en recherchant les tentatives ayant échoué pour acquérir immédiatement des mémoires tampons précédemment validées pour la présentation. Une mémoire tampon de contenu à quatre couches continue d’être présentée à chaque image jusqu’à ce qu’une nouvelle mémoire tampon soit validée.

Une mémoire tampon créée par un objet HolographicQuadLayer ne peut être utilisée qu’avec cet objet. Il doit être libéré lorsque holographicQuadLayer est libéré ou lorsque l’appareil Direct3D 12 doit être recréé, selon ce qui se produit en premier. La mémoire tampon ne doit pas se trouver dans le pipeline GPU lorsqu’elle est libérée. Les clôtures Direct3D 12 doivent être utilisées pour garantir que cette condition est remplie avant de libérer l’objet tampon.

Héritage

L’interface IHolographicQuadLayerInterop hérite de l’interface IInspectable.

Méthodes

L’interface IHolographicQuadLayerInterop possède ces méthodes.

 
IHolographicQuadLayerInterop ::AcquireDirect3D12BufferResource

La fonction IHolographicQuadLayerInterop ::AcquireDirect3D12BufferResource acquiert une ressource de mémoire tampon Direct3D 12.
IHolographicQuadLayerInterop ::AcquireDirect3D12BufferResourceWithTimeout

La fonction IHolographicQuadLayerInterop ::AcquireDirect3D12BufferResourceWithTimeout acquiert une ressource de mémoire tampon Direct3D 12, avec un délai d’expiration facultatif.
IHolographicQuadLayerInterop ::CreateDirect3D12ContentBufferResource

Crée une ressource Direct3D 12 à utiliser comme mémoire tampon de contenu pour la couche.
IHolographicQuadLayerInterop ::CreateDirect3D12HardwareProtectedContentBufferResource

La fonction IHolographicQuadLayerInterop ::CreateDirect3D12HardwareProtectedContentBufferResource crée une mémoire tampon de contenu de ressource Direct3D 12 pour la caméra.
IHolographicQuadLayerInterop ::UnacquireDirect3D12BufferResource

La fonction IHolographicQuadLayerInterop ::UnacquireDirect3D12BufferResource annule l’acquisition d’une ressource de mémoire tampon Direct3D 12.

Remarques

Pour utiliser cette interface en C++/WinRT, QueryInterface pour l’interface IHolographicQuadLayerInterop de l’objet HolographicQuadLayer .

Notez que vous pouvez utiliser l’API HolographicViewConfiguration pour déterminer les options disponibles pour le format de mémoire tampon.

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

Pour utiliser cette interface en C++/CX, castez l’objet HolographicQuadLayer en IInspectable*. Puis QueryInterface pour l’interface IHolographicQuadLayerInterop à partir du pointeur 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]));
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 2004 (10.0 ; Build 19041)
Serveur minimal pris en charge Windows Server, version 2004 (10.0 ; Build 19041)
En-tête windows.graphics.holographic.interop.h