Share via


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

A interface IHolographicCameraInterop é uma interface nano-COM, usada para criar recursos de buffer traseiro do Direct3D 12 para um objeto holographicCamera Windows Runtime. Essa é uma etapa de inicialização para usar o Direct3D 12 com Windows Mixed Reality. Essa interface também permite que seu aplicativo adquira a propriedade de buffers de conteúdo para renderização, antes de confirmá-los com a interface HolographicCameraRenderingParametersInterop .

Seu aplicativo pode usar essa interface para inicializar a renderização holográfica usando o Direct3D 12. O Nano-COM permite que ponteiros para objetos Direct3D 12 sejam passados diretamente como parâmetros para chamadas à API, em vez de usar um objeto de contêiner Windows Runtime.

Seu aplicativo gerencia seu próprio pool de recursos de buffer holográfico para uso como destinos de renderização (buffers de fundo) para cada HolographicCamera. Ele pode criar buffers adicionais conforme necessário para continuar a renderização sem problemas. Na maioria dos dispositivos, serão três ou quatro superfícies. Seu aplicativo deve começar com pelo menos dois buffers no pool. Seu aplicativo pode detectar dinamicamente quando precisa criar um novo buffer procurando tentativas malsucedidas de adquirir imediatamente buffers que foram confirmados anteriormente para apresentação. Seu aplicativo deve confirmar um buffer para um HolographicCamera incluído no HolographicFrame , a menos que a camada primária esteja desabilitada para essa câmera, caso em que seu aplicativo não deve confirmar um buffer para essa câmera.

Um buffer criado por um objeto HolographicCamera só pode ser usado com esse objeto. Ele deve ser lançado quando o HolographicCamera é lançado ou quando o dispositivo Direct3D 12 precisa ser recriado, o que acontecer primeiro. O buffer não deve estar no pipeline de GPU quando ele é lançado— as cercas do Direct3D 12 devem ser usadas para garantir que essa condição seja atendida antes de liberar o objeto buffer.

Herança

A interface IHolographicCameraInterop herda da interface IInspectable .

Métodos

A interface IHolographicCameraInterop tem esses métodos.

 
IHolographicCameraInterop::AcquireDirect3D12BufferResource

A função IHolographicCameraInterop::AcquireDirect3D12BufferResource adquire um recurso de buffer Direct3D 12.
IHolographicCameraInterop::AcquireDirect3D12BufferResourceWithTimeout

A função IHolographicCameraInterop::AcquireDirect3D12BufferResourceWithTimeout adquire um recurso de buffer Direct3D 12, com um tempo limite opcional.
IHolographicCameraInterop::CreateDirect3D12BackBufferResource

Cria um recurso do Direct3D 12 para uso como um buffer de conteúdo para a câmera.
IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource

IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource cria um recurso Direct3D 12 para uso como um buffer de conteúdo para a câmera.
IHolographicCameraInterop::UnacquireDirect3D12BufferResource

A função IHolographicCameraInterop::UnacquireDirect3D12BufferResource não adquire um recurso de buffer Direct3D 12.

Comentários

Para usar essa interface em C++/WinRT, QueryInterface para a interface IHolographicCameraInterop do objeto 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]));

Você pode usar a API HolographicViewConfiguration para determinar as opções disponíveis para o formato de buffer e para adquirir informações sobre o tamanho de destino de renderização para a saída correspondente, por exemplo, o HolographicDisplay. Se o aplicativo precisar alterar o tamanho do buffer para buffers Direct3D 12 do tamanho de destino de renderização padrão para o HolographicCamera, ele deverá solicitar um novo tamanho de destino de renderização usando o método HolographicViewConfiguration::RequestRenderTargetSize e criar buffers usando o tamanho retornado por esse método ou escolher um tamanho arbitrário e substituir o visor conforme descrito no parágrafo a seguir.

Seu aplicativo Direct3D 12 pode usar um tamanho de visor escolhido independentemente pelo aplicativo. Nesse caso, você deve chamar o método HolographicCameraPose.OverrideViewport para informar a plataforma sobre o visor usado para renderização.

O trecho de código a seguir é do modelo de aplicativo Windows Mixed Reality Direct3D 12, que inclui código clichê para a maioria das APIs fornecidas no Windows.Graphics.Holographic.Interop.h cabeçalho.

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

Requisitos

   
Cliente mínimo com suporte Windows 10, versão 2004 (10.0; Build 19041)
Servidor mínimo com suporte Windows Server, versão 2004 (10.0; Build 19041)
Cabeçalho windows.graphics.holographic.interop.h