다음을 통해 공유


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

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

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

애플리케이션은 각 HolographicCamera에 대한 렌더링 대상(백 버퍼)으로 사용할 자체 홀로그램 버퍼 리소스 풀을 관리합니다. 원활하게 렌더링을 계속하기 위해 필요에 따라 추가 버퍼를 만들 수 있습니다. 대부분의 장치에서는 서너 개의 표면이 됩니다. 애플리케이션은 풀에서 두 개 이상의 버퍼로 시작해야 합니다. 애플리케이션은 이전에 프레젠테이션을 위해 커밋된 버퍼를 즉시 획득하는 데 실패한 시도를 찾아 새 버퍼를 만들어야 하는 시기를 동적으로 감지할 수 있습니다. 애플리케이션은 해당 카메라에 대해 기본 계층을 사용하지 않도록 설정하지 않는 한 HolographicFrame에 포함된 HolographicCamera에 대한 버퍼를 커밋해야 합니다. 이 경우 애플리케이션은 해당 카메라에 대한 버퍼를 커밋해서는 안 됩니다.

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

상속

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

메서드

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

 
IHolographicCameraInterop::AcquireDirect3D12BufferResource

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

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

카메라의 콘텐츠 버퍼로 사용할 Direct3D 12 리소스를 만듭니다.
IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource

IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource는 카메라의 콘텐츠 버퍼로 사용할 Direct3D 12 리소스를 만듭니다.
IHolographicCameraInterop::UnacquireDirect3D12BufferResource

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

설명

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

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

HolographicViewConfiguration API를 사용하여 버퍼 형식에 사용할 수 있는 옵션을 확인하고 해당 출력의 렌더링 대상 크기(예: HolographicDisplay)에 대한 정보를 얻을 수 있습니다. 애플리케이션이 HolographicCamera의 기본 렌더링 대상 크기에서 Direct3D 12 버퍼의 버퍼 크기를 변경해야 하는 경우 HolographicViewConfiguration::RequestRenderTargetSize 메서드를 사용하여 새 렌더링 대상 크기를 요청하고 해당 메서드에서 반환된 크기를 사용하여 버퍼를 만들거나 임의의 크기를 선택하고 다음 단락에 설명된 대로 뷰포트를 재정의해야 합니다.

Direct3D 12 애플리케이션은 애플리케이션에서 독립적으로 선택한 뷰포트 크기를 사용할 수 있습니다. 이 경우 각 프레임마다 HolographicCameraPose.OverrideViewport 메서드를 호출하여 렌더링에 사용되는 뷰포트에 대해 플랫폼에 알려야 합니다.

다음 코드 발췌는 헤더에 제공되는 대부분의 API에 대한 상용구 코드를 포함하는 Windows Mixed Reality Direct3D 12 앱 템플릿에서 Windows.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()));

요구 사항

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