HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece um buffer de profundidade para esse quadro para o pipeline de exibição holográfica, permitindo a estabilização baseada em profundidade do quadro em relação ao movimento de cabeça do usuário.
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)
Parâmetros
- value
- IDirect3DSurface
A superfície direct3D 11 que contém o buffer de profundidade do aplicativo.
Requisitos do Windows
Família de dispositivos |
Windows 10 Creators Update (introduzida na 10.0.15063.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v4.0)
|
Comentários
Se um aplicativo fornecer um buffer de profundidade para um quadro e ignorar a chamada setFocusPoint, o ponto de foco e o normal serão inferidos com base no buffer de profundidade. Seu aplicativo geralmente alcançará a qualidade visual ideal confirmando um buffer de profundidade preciso cujos pixels podem ser mapeados de volta para metros usando seus planos próximos e distantes especificados e, em seguida, não chamando SetFocusPoint.
Esse método usará o dispositivo Direct3D que você forneceu ao HolographicSpace. Se você especificou o sinalizador D3D11_CREATE_DEVICE_SINGLETHREADED em seu dispositivo, chame esse método do thread direct3D único para evitar um comportamento indefinido.
O exemplo de código a seguir mostra como converter um recurso de buffer de profundidade de um ID3D11Texture2D nativo para uma interface WinRT IDirect3DSurface que pode ser passada para CommitDirect3D11DepthBuffer. O ID3D11Texture2D deve ter sido criado com o D3D11_BIND_SHADER_RESOURCE a ser lido pelo 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>();
}
O método CreateDepthTextureInteropObject mostrado neste exemplo está incluído nos modelos do aplicativo Windows Mixed Reality.