Share via


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

A interface IHolographicQuadLayerInterop é uma interface nano-COM, usada para criar buffers de conteúdo direct3D 12 para um objeto Windows Runtime HolographicQuadLayer. Esta é uma etapa de inicialização para usar o Direct3D 12 com Windows Mixed Reality camadas quad. Ele também permite que seu aplicativo adquira a propriedade de buffers de conteúdo para renderização, antes de confirmá-los com a interface IHolographicQuadLayerUpdateParametersInterop .

Seu aplicativo pode usar IHolographicQuadLayerInterop para inicializar recursos de buffer de conteúdo direct3D 12 para camadas quad holográficas. 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 de conteúdo holográfico. 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 buffers. 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 com falha para adquirir imediatamente buffers que foram confirmados anteriormente para apresentação. Um buffer de conteúdo de camada quad continuará a ser apresentado a cada quadro até que um novo buffer seja confirmado.

Um buffer criado por um objeto HolographicQuadLayer só pode ser usado com esse objeto. Ele deve ser lançado quando o HolographicQuadLayer é 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 é liberado. 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 IHolographicQuadLayerInterop herda da interface IInspectable .

Métodos

A interface IHolographicQuadLayerInterop tem esses métodos.

 
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource

A função IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource adquire um recurso de buffer direct3D 12.
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout

A função IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout adquire um recurso de buffer direct3D 12, com um tempo limite opcional.
IHolographicQuadLayerInterop::CreateDirect3D12ContentBufferResource

Cria um recurso direct3D 12 para uso como um buffer de conteúdo para a camada.
IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource

A função IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource cria um buffer de conteúdo de recurso do Direct3D 12 para a câmera.
IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource

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

Comentários

Para usar essa interface em C++/WinRT, QueryInterface para a interface IHolographicQuadLayerInterop do objeto HolographicQuadLayer .

Observe que você pode usar a API HolographicViewConfiguration para determinar as opções disponíveis para o formato de 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]));
}

Para usar essa interface em C++/CX, converta o objeto HolographicQuadLayer em IInspectable*. Em seguida, QueryInterface para a interface IHolographicQuadLayerInterop do ponteiro 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]));
}

Requisitos

Requisito Valor
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