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

La interfaz IHolographicQuadLayerInterop es una interfaz nano-COM, que se usa para crear búferes de contenido de Direct3D 12 para un objeto holographicQuadLayer Windows Runtime. Se trata de un paso de inicialización para usar Direct3D 12 con Windows Mixed Reality capas cuádruples. También permite a la aplicación adquirir la propiedad de los búferes de contenido para la representación, antes de confirmarlos con la interfaz IHolographicQuadLayerUpdateParametersInterop .

La aplicación puede usar IHolographicQuadLayerInterop para inicializar recursos de búfer de contenido de Direct3D 12 para capas cuadrográficas holográficas. Nano-COM permite que los punteros a objetos direct3D 12 se pasen directamente como parámetros para las llamadas API, en lugar de usar un objeto contenedor de Windows Runtime.

La aplicación administra su propio grupo de recursos de búfer de contenido holográfico. Puede crear búferes adicionales según sea necesario para continuar con la representación sin problemas. En la mayoría de los dispositivos, será de tres o cuatro búferes. La aplicación debe comenzar con al menos dos búferes en el grupo. La aplicación puede detectar dinámicamente cuándo necesita crear un nuevo búfer buscando intentos erróneos de adquirir inmediatamente búferes confirmados anteriormente para la presentación. Un búfer de contenido de capa cuádruple seguirá presentándose cada fotograma hasta que se confirme un nuevo búfer.

Un búfer creado por un objeto HolographicQuadLayer solo se puede usar con ese objeto. Debe liberarse cuando se libere HolographicQuadLayer o cuando el dispositivo Direct3D 12 tenga que volver a crearse, lo que ocurra primero. El búfer no debe estar en la canalización de GPU cuando se libere: se deben usar barreras de Direct3D 12 para asegurarse de que esta condición se cumple antes de liberar el objeto de búfer.

Herencia

La interfaz IHolographicQuadLayerInterop hereda de la interfaz IInspectable .

Métodos

La interfaz IHolographicQuadLayerInterop tiene estos métodos.

 
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource

La función IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource adquiere un recurso de búfer de Direct3D 12.
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout

La función IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout adquiere un recurso de búfer de Direct3D 12, con un tiempo de espera opcional.
IHolographicQuadLayerInterop::CreateDirect3D12ContentBufferResource

Crea un recurso de Direct3D 12 para usarlo como búfer de contenido para la capa.
IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource

La función IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource crea un búfer de contenido de recursos de Direct3D 12 para la cámara.
IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource

La función IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource anula la adquisición de un recurso de búfer de Direct3D 12.

Comentarios

Para usar esta interfaz en C++/WinRT, QueryInterface para la interfaz IHolographicQuadLayerInterop del objeto HolographicQuadLayer .

Tenga en cuenta que puede usar holographicViewConfiguration API para determinar las opciones disponibles para el formato de búfer.

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 esta interfaz en C++/CX, convierta el objeto HolographicQuadLayer en IInspectable*. A continuación, QueryInterface para la interfaz IHolographicQuadLayerInterop desde el puntero 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 Value
Cliente mínimo compatible Windows 10, versión 2004 (10.0; Compilación 19041)
Servidor mínimo compatible Windows Server, versión 2004 (10.0; Compilación 19041)
Encabezado windows.graphics.holographic.interop.h