Partager via


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

L’interface IHolographicCameraInterop est une interface nano-COM, utilisée pour créer des ressources de mémoire tampon de retour Direct3D 12 pour un objet HolographicCamera Windows Runtime. Il s’agit d’une étape d’initialisation pour l’utilisation de Direct3D 12 avec Windows Mixed Reality. Cette interface 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 HolographicCameraRenderingParametersInterop .

Votre application peut utiliser cette interface pour initialiser le rendu holographique à l’aide de Direct3D 12. 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 holographique à utiliser comme cibles de rendu (mémoires tampons d’arrière-mémoire) pour chaque HolographicCamera. Il peut créer des mémoires tampons supplémentaires en fonction des besoins afin de continuer le rendu en douceur. Sur la plupart des appareils, il s’agit de trois ou quatre surfaces. Votre application doit commencer par au moins deux mémoires tampons dans le pool. Votre application peut détecter dynamiquement quand elle doit créer une mémoire tampon en recherchant des tentatives infructueuses d’acquisition immédiate de mémoires tampons précédemment validées pour la présentation. Votre application doit valider une mémoire tampon pour un HolographicCamera inclus dans l’HolographicFrame , sauf si la couche principale est désactivée pour cette caméra, auquel cas votre application ne doit pas valider de mémoire tampon pour cette caméra.

Une mémoire tampon créée par un objet HolographicCamera ne peut être utilisée qu’avec cet objet. Il doit être libéré lors de la sortie de l’HolographicCamera 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 IHolographicCameraInterop hérite de l’interface IInspectable .

Méthodes

L’interface IHolographicCameraInterop a ces méthodes.

 
IHolographicCameraInterop::AcquireDirect3D12BufferResource

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

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

Crée une ressource Direct3D 12 à utiliser comme mémoire tampon de contenu pour l’appareil photo.
IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource

IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource crée une ressource Direct3D 12 à utiliser comme mémoire tampon de contenu pour l’appareil photo.
IHolographicCameraInterop::UnacquireDirect3D12BufferResource

La fonction IHolographicCameraInterop::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 IHolographicCameraInterop à partir de l’objet 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]));

Vous pouvez utiliser l’API HolographicViewConfiguration pour déterminer les options disponibles pour le format de mémoire tampon et pour obtenir des informations sur la taille de la cible de rendu pour la sortie correspondante, par exemple, HolographicDisplay. Si votre application doit changer la taille de la mémoire tampon pour les mémoires tampons Direct3D 12 à partir de la taille cible de rendu par défaut pour holographicCamera, elle doit soit demander une nouvelle taille de cible de rendu à l’aide de la méthode HolographicViewConfiguration::RequestRenderTargetSize et créer des mémoires tampons à l’aide de la taille retournée par cette méthode, soit choisir une taille arbitraire et remplacer la fenêtre d’affichage comme décrit dans le paragraphe suivant.

Votre application Direct3D 12 peut utiliser une taille de fenêtre d’affichage choisie indépendamment par l’application. Dans ce cas, vous devez appeler la méthode HolographicCameraPose.OverrideViewport chaque image pour informer la plateforme de la fenêtre d’affichage utilisée pour le rendu.

L’extrait de code suivant provient du modèle d’application Direct3D 12 Windows Mixed Reality, qui inclut du code réutilisable pour la plupart des API fournies dans l’en-têteWindows.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()));

Configuration requise

   
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