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.