다음을 통해 공유


IHolographicQuadLayerInterop 인터페이스(windows.graphics.holographic.interop.h)

IHolographicQuadLayerInterop 인터페이스는 HolographicQuadLayer Windows 런타임 개체에 대한 Direct3D 12 콘텐츠 버퍼를 만드는 데 사용되는 nano-COM 인터페이스입니다. 이는 Windows Mixed Reality 쿼드 계층과 함께 Direct3D 12를 사용하기 위한 초기화 단계입니다. 또한 IHolographicQuadLayerUpdateParametersInterop 인터페이스를 사용하여 커밋하기 전에 애플리케이션에서 렌더링을 위한 콘텐츠 버퍼의 소유권을 획득할 수 있습니다.

애플리케이션 은 IHolographicQuadLayerInterop 을 사용하여 홀로그램 쿼드 계층에 대한 Direct3D 12 콘텐츠 버퍼 리소스를 초기화할 수 있습니다. Nano-COM을 사용하면 Windows 런타임 컨테이너 개체를 사용하는 대신 Direct3D 12 개체에 대한 포인터를 API 호출에 대한 매개 변수로 직접 전달할 수 있습니다.

애플리케이션은 홀로그램 콘텐츠 버퍼 리소스의 자체 풀을 관리합니다. 원활하게 렌더링을 계속하기 위해 필요에 따라 추가 버퍼를 만들 수 있습니다. 대부분의 디바이스에서는 3~4개의 버퍼가 됩니다. 애플리케이션은 풀에서 두 개 이상의 버퍼로 시작해야 합니다. 애플리케이션은 이전에 프레젠테이션을 위해 커밋된 버퍼를 즉시 획득하는 데 실패한 시도를 찾아 새 버퍼를 만들어야 하는 시기를 동적으로 감지할 수 있습니다. 쿼드 계층 콘텐츠 버퍼는 새 버퍼가 커밋될 때까지 각 프레임에 계속 표시됩니다.

HolographicQuadLayer 개체에서 만든 버퍼는 해당 개체에서만 사용할 수 있습니다. HolographicQuadLayer가 릴리스되거나 Direct3D 12 디바이스를 다시 만들어야 할 때 릴리스되어야 합니다. 어느 것이든 먼저 발생합니다. 버퍼가 릴리스될 때 GPU 파이프라인에 있으면 안 됩니다. 버퍼 개체를 해제하기 전에 이 조건이 충족되도록 Direct3D 12 펜스를 사용해야 합니다.

상속

IHolographicQuadLayerInterop 인터페이스는 IInspectable 인터페이스에서 상속됩니다.

메서드

IHolographicQuadLayerInterop 인터페이스에는 이러한 메서드가 있습니다.

 
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource

IHolographicQuadLayerInterop::AcquireDirect3D12BufferResource 함수는 Direct3D 12 버퍼 리소스를 획득합니다.
IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout

IHolographicQuadLayerInterop::AcquireDirect3D12BufferResourceWithTimeout 함수는 선택적 시간 제한과 함께 Direct3D 12 버퍼 리소스를 획득합니다.
IHolographicQuadLayerInterop::CreateDirect3D12ContentBufferResource

계층의 콘텐츠 버퍼로 사용할 Direct3D 12 리소스를 만듭니다.
IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource

IHolographicQuadLayerInterop::CreateDirect3D12HardwareProtectedContentBufferResource 함수는 카메라에 대한 Direct3D 12 리소스 콘텐츠 버퍼를 만듭니다.
IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource

IHolographicQuadLayerInterop::UnacquireDirect3D12BufferResource 함수는 Direct3D 12 버퍼 리소스를 획득하지 않습니다.

설명

C++/WinRT에서 이 인터페이스를 사용하려면 HolographicQuadLayer 개체의 IHolographicQuadLayerInterop 인터페이스에 대한 QueryInterface입니다.

HolographicViewConfiguration API를 사용하여 버퍼 형식에 사용할 수 있는 옵션을 결정할 수 있습니다.

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

C++/CX에서 이 인터페이스를 사용하려면 HolographicQuadLayer 개체를 IInspectable*로 캐스팅합니다. 그런 다음 IInspectable 포인터의 IHolographicQuadLayerInterop 인터페이스에 대한 QueryInterface 입니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 버전 2004(10.0; 빌드 19041)
지원되는 최소 서버 Windows Server 버전 2004(10.0; 빌드 19041)
머리글 windows.graphics.holographic.interop.h