HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer Methode

Definition

Stellt einen Tiefenpuffer für diesen Frame für die holografische Anzeigepipeline bereit, die eine tiefenbasierte Stabilisierung des Frames relativ zur Kopfbewegung des Benutzers ermöglicht.

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)

Parameter

value
IDirect3DSurface

Die Direct3D 11-Oberfläche, die den Tiefenpuffer der App enthält.

Windows-Anforderungen

Gerätefamilie
Windows 10 Creators Update (eingeführt in 10.0.15063.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v4.0)

Hinweise

Wenn eine App einen Tiefenpuffer für einen Frame bereitstellt und den Aufruf von SetFocusPoint überspringt, werden der Fokuspunkt und der Normalwert basierend auf dem Tiefenpuffer abgeleitet. Ihre App erzielt im Allgemeinen eine optimale visuelle Qualität, indem sie einen genauen Tiefenpuffer festlegt, dessen Pixel mithilfe Ihrer angegebenen nah- und fernen Ebenen wieder den Messgeräten zugeordnet werden können, und dann SetFocusPoint nicht aufruft.

Diese Methode verwendet das Direct3D-Gerät, das Sie dem HolographicSpace bereitgestellt haben. Wenn Sie das D3D11_CREATE_DEVICE_SINGLETHREADED-Flag auf Ihrem Gerät angegeben haben, rufen Sie diese Methode über Ihren einzelnen Direct3D-Thread auf, um nicht definiertes Verhalten zu vermeiden.

Im folgenden Codebeispiel wird gezeigt, wie eine Tiefenpufferressource von einer nativen ID3D11Texture2D in eine WinRT IDirect3DSurface-Schnittstelle konvertiert wird, die an CommitDirect3D11DepthBuffer übergeben werden kann. Id3D11Texture2D muss mit dem D3D11_BIND_SHADER_RESOURCE erstellt worden sein, um vom System gelesen zu werden.

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

Die in diesem Beispiel gezeigte CreateDepthTextureInteropObject-Methode ist in den Windows Mixed Reality App-Vorlagen enthalten.

Gilt für: