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 |