Partager via


HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer Méthode

Définition

Fournit une mémoire tampon de profondeur pour cette image sur le pipeline d’affichage holographique, ce qui permet une stabilisation basée sur la profondeur de l’image par rapport au mouvement de la tête de l’utilisateur.

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)

Paramètres

value
IDirect3DSurface

Surface Direct3D 11 contenant la mémoire tampon de profondeur de l’application.

Configuration requise pour Windows

Famille d’appareils
Windows 10 Creators Update (introduit dans 10.0.15063.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v4.0)

Remarques

Si une application fournit une mémoire tampon de profondeur pour une trame, puis ignore l’appel de SetFocusPoint, le point de focus et la normale sont déduits en fonction de la mémoire tampon de profondeur. Votre application obtient généralement une qualité visuelle optimale en validant une mémoire tampon de profondeur précise dont les pixels peuvent être mappés aux compteurs à l’aide des plans proches et éloignés spécifiés, puis en n’appelant pas SetFocusPoint.

Cette méthode utilise l’appareil Direct3D que vous avez fourni à HolographicSpace. Si vous avez spécifié l’indicateur D3D11_CREATE_DEVICE_SINGLETHREADED sur votre appareil, veillez à appeler cette méthode à partir de votre thread Direct3D unique pour éviter tout comportement non défini.

L’exemple de code suivant montre comment convertir une ressource de mémoire tampon de profondeur d’un ID3D11Texture2D natif en une interface WinRT IDirect3DSurface qui peut être transmise à CommitDirect3D11DepthBuffer. L’ID3D11Texture2D doit avoir été créé avec le D3D11_BIND_SHADER_RESOURCE pour être lu par le système.

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

La méthode CreateDepthTextureInteropObject illustrée dans cet exemple est incluse dans les modèles d’application Windows Mixed Reality.

S’applique à