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 接口。 ID3D11Texture2D 必须是使用系统读取D3D11_BIND_SHADER_RESOURCE创建的。

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 应用模板中。

适用于