다음을 통해 공유


HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer 메서드

정의

이 프레임에 대한 깊이 버퍼를 홀로그램 디스플레이 파이프라인에 제공하여 사용자의 헤드 동작을 기준으로 프레임의 깊이 기반 안정화를 가능하게 합니다.

public:
 virtual void CommitDirect3D11DepthBuffer(IDirect3DSurface ^ value) = CommitDirect3D11DepthBuffer;
void CommitDirect3D11DepthBuffer(IDirect3DSurface const& value);
public void CommitDirect3D11DepthBuffer(IDirect3DSurface value);
function commitDirect3D11DepthBuffer(value)
Public Sub CommitDirect3D11DepthBuffer (value As IDirect3DSurface)

매개 변수

value
IDirect3DSurface

앱의 깊이 버퍼를 포함하는 Direct3D 11 표면입니다.

Windows 요구 사항

디바이스 패밀리
Windows 10 Creators Update (10.0.15063.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v4.0에서 도입되었습니다.)

설명

앱이 프레임에 대한 깊이 버퍼를 제공한 다음 SetFocusPoint 호출을 건너뛰는 경우 포커스 포인트와 일반은 깊이 버퍼를 기반으로 유추됩니다. 앱은 일반적으로 지정된 근거리 및 원거리 평면을 사용하여 픽셀을 미터에 다시 매핑할 수 있는 정확한 깊이 버퍼를 커밋한 다음 SetFocusPoint를 호출하지 않음으로써 최적의 시각적 품질을 달성합니다.

이 메서드는 HolographicSpace에 제공한 Direct3D 디바이스를 사용합니다. 디바이스에서 D3D11_CREATE_DEVICE_SINGLETHREADED 플래그를 지정한 경우 정의되지 않은 동작을 방지하려면 단일 Direct3D 스레드에서 이 메서드를 호출해야 합니다.

다음 코드 예제에서는 깊이 버퍼 리소스를 네이티브 ID3D11Texture2D에서 CommitDirect3D11DepthBuffer로 전달할 수 있는 WinRT IDirect3DSurface 인터페이스로 변환하는 방법을 보여 줍니다. 시스템에서 읽을 D3D11_BIND_SHADER_RESOURCEID3D11Texture2D를 만들어야 합니다.

inline winrt::Windows::Graphics::DirectX::Direct3D11::IDirect3DSurface CreateDepthTextureInteropObject(
        const Microsoft::WRL::ComPtr<ID3D11Texture2D> spTexture2D)
{
    // Direct3D interop APIs are used to provide the buffer to the WinRT API.
    Microsoft::WRL::ComPtr<IDXGIResource1> depthStencilResource;
    winrt::check_hresult(spTexture2D.As(&depthStencilResource));
    Microsoft::WRL::ComPtr<IDXGISurface2> depthDxgiSurface;
    winrt::check_hresult(depthStencilResource->CreateSubresourceSurface(0, &depthDxgiSurface));
    winrt::com_ptr<::IInspectable> inspectableSurface;
    winrt::check_hresult(
        CreateDirect3D11SurfaceFromDXGISurface(
            depthDxgiSurface.Get(),
            reinterpret_cast<IInspectable**>(winrt::put_abi(inspectableSurface))
        ));

    return inspectableSurface.as<winrt::Windows::Graphics::DirectX::Direct3D11::IDirect3DSurface>();
}

이 예제에 표시된 CreateDepthTextureInteropObject 메서드는 Windows Mixed Reality 앱 템플릿에 포함되어 있습니다.

적용 대상