Поделиться через


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.

Этот метод будет использовать устройство Direct3D, предоставленное для HolographicSpace. Если вы указали флаг D3D11_CREATE_DEVICE_SINGLETHREADED на устройстве, обязательно вызовите этот метод из одного потока Direct3D, чтобы избежать неопределенного поведения.

В следующем примере кода показано, как преобразовать ресурс буфера глубины из собственного ID3D11Texture2D в интерфейс WinRT IDirect3DSurface , который можно передать в CommitDirect3D11DepthBuffer. 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.

Применяется к