Partilhar via


HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer Método

Definição

Fornece um buffer de profundidade para esse quadro para o pipeline de exibição holográfica, permitindo a estabilização baseada em profundidade do quadro em relação ao movimento de cabeça do usuário.

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)

Parâmetros

value
IDirect3DSurface

A superfície direct3D 11 que contém o buffer de profundidade do aplicativo.

Requisitos do Windows

Família de dispositivos
Windows 10 Creators Update (introduzida na 10.0.15063.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v4.0)

Comentários

Se um aplicativo fornecer um buffer de profundidade para um quadro e ignorar a chamada setFocusPoint, o ponto de foco e o normal serão inferidos com base no buffer de profundidade. Seu aplicativo geralmente alcançará a qualidade visual ideal confirmando um buffer de profundidade preciso cujos pixels podem ser mapeados de volta para metros usando seus planos próximos e distantes especificados e, em seguida, não chamando SetFocusPoint.

Esse método usará o dispositivo Direct3D que você forneceu ao HolographicSpace. Se você especificou o sinalizador D3D11_CREATE_DEVICE_SINGLETHREADED em seu dispositivo, chame esse método do thread direct3D único para evitar um comportamento indefinido.

O exemplo de código a seguir mostra como converter um recurso de buffer de profundidade de um ID3D11Texture2D nativo para uma interface WinRT IDirect3DSurface que pode ser passada para CommitDirect3D11DepthBuffer. O ID3D11Texture2D deve ter sido criado com o D3D11_BIND_SHADER_RESOURCE a ser lido pelo sistema.

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

O método CreateDepthTextureInteropObject mostrado neste exemplo está incluído nos modelos do aplicativo Windows Mixed Reality.

Aplica-se a