HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona un búfer de profundidad para este marco a la canalización de visualización holográfica, lo que permite la estabilización basada en profundidad del marco en relación con el movimiento de la cabeza del usuario.
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
Superficie de Direct3D 11 que contiene el búfer de profundidad de la aplicación.
Requisitos de Windows
Familia de dispositivos |
Windows 10 Creators Update (se introdujo en la versión 10.0.15063.0)
|
API contract |
Windows.Foundation.UniversalApiContract (se introdujo en la versión v4.0)
|
Comentarios
Si una aplicación proporciona un búfer de profundidad para un marco y, a continuación, omite la llamada a SetFocusPoint, el punto de enfoque y la normalidad se deducen en función del búfer de profundidad. La aplicación generalmente logrará una calidad visual óptima al confirmar un búfer de profundidad preciso cuyos píxeles se pueden asignar de vuelta a los medidores mediante los planos cercanos y lejanos especificados y, a continuación, no llamando a SetFocusPoint.
Este método usará el dispositivo Direct3D que proporcionó a HolographicSpace. Si ha especificado la marca D3D11_CREATE_DEVICE_SINGLETHREADED en el dispositivo, asegúrese de llamar a este método desde el único subproceso de Direct3D para evitar un comportamiento indefinido.
En el ejemplo de código siguiente se muestra cómo convertir un recurso de búfer de profundidad de un id3D11Texture2D nativo en una interfaz IDirect3DSurface de WinRT que se puede pasar a CommitDirect3D11DepthBuffer. El id3D11Texture2D debe haberse creado con el D3D11_BIND_SHADER_RESOURCE que el sistema debe leer.
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>();
}
El método CreateDepthTextureInteropObject que se muestra en este ejemplo se incluye en las plantillas de aplicación de Windows Mixed Reality.