HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为全息显示管道提供此帧的深度缓冲区,实现相对于用户头部运动的帧的基于深度的防抖动。
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。
此方法将使用提供给 HolographicSpace 的 Direct3D 设备。 如果已在设备上指定D3D11_CREATE_DEVICE_SINGLETHREADED标志,请确保从单个 Direct3D 线程调用此方法,以避免未定义的行为。
下面的代码示例演示如何将深度缓冲区资源从本机 ID3D11Texture2D 转换为可传递到 CommitDirect3D11DepthBuffer 的 WinRT IDirect3DSurface 接口。 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 应用模板中。