Condividi tramite


HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer Metodo

Definizione

Fornisce un buffer di profondità per questo frame alla pipeline di visualizzazione olografica, consentendo la stabilizzazione basata sulla profondità del frame rispetto al movimento della testa dell'utente.

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)

Parametri

value
IDirect3DSurface

Superficie Direct3D 11 contenente il buffer di profondità dell'app.

Requisiti Windows

Famiglia di dispositivi
Windows 10 Creators Update (è stato introdotto in 10.0.15063.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v4.0)

Commenti

Se un'app fornisce un buffer di profondità per un frame e quindi ignora la chiamata a SetFocusPoint, il punto attivo e il normale vengono dedotti in base al buffer di profondità. L'app otterrà in genere una qualità visiva ottimale eseguendo il commit di un buffer di profondità accurato i cui pixel possono essere mappati ai contatori usando i piani vicini e lontani specificati e quindi non chiamando SetFocusPoint.

Questo metodo userà il dispositivo Direct3D fornito a HolographicSpace. Se è stato specificato il flag D3D11_CREATE_DEVICE_SINGLETHREADED nel dispositivo, assicurarsi di chiamare questo metodo dal thread Direct3D singolo per evitare un comportamento non definito.

L'esempio di codice seguente illustra come convertire una risorsa buffer di profondità da un ID3D11Texture2D nativo a un'interfaccia IDirect3DSurface WinRT che può essere passata a CommitDirect3D11DepthBuffer. L'ID3D11Texture2D deve essere stato creato con il D3D11_BIND_SHADER_RESOURCE da leggere dal 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>();
}

Il metodo CreateDepthTextureInteropObject illustrato in questo esempio è incluso nei modelli di app Windows Mixed Reality.

Si applica a