HolographicCameraRenderingParameters.CommitDirect3D11DepthBuffer Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce un buffer di profondità per questo frame alla pipeline di visualizzazione olografica, consentendo la stabilizzazione basata sulla profondità del frame rispetto al movimento della testa dell'utente.
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)
Parametri
- value
- IDirect3DSurface
Superficie Direct3D 11 contenente il buffer di profondità dell'app.
Requisiti Windows
Famiglia di dispositivi |
Windows 10 Creators Update (è stato introdotto in 10.0.15063.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v4.0)
|
Commenti
Se un'app fornisce un buffer di profondità per un frame e quindi ignora la chiamata a SetFocusPoint, il punto attivo e il normale vengono dedotti in base al buffer di profondità. L'app otterrà in genere una qualità visiva ottimale eseguendo il commit di un buffer di profondità accurato i cui pixel possono essere mappati ai contatori usando i piani vicini e lontani specificati e quindi non chiamando SetFocusPoint.
Questo metodo userà il dispositivo Direct3D fornito a HolographicSpace. Se è stato specificato il flag D3D11_CREATE_DEVICE_SINGLETHREADED nel dispositivo, assicurarsi di chiamare questo metodo dal thread Direct3D singolo per evitare un comportamento non definito.
L'esempio di codice seguente illustra come convertire una risorsa buffer di profondità da un ID3D11Texture2D nativo a un'interfaccia IDirect3DSurface WinRT che può essere passata a CommitDirect3D11DepthBuffer. L'ID3D11Texture2D deve essere stato creato con il D3D11_BIND_SHADER_RESOURCE da leggere dal 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>();
}
Il metodo CreateDepthTextureInteropObject illustrato in questo esempio è incluso nei modelli di app Windows Mixed Reality.