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 인터페이스로 변환하는 방법을 보여 줍니다. 시스템에서 읽을 D3D11_BIND_SHADER_RESOURCEID3D11Texture2D를 만들어야 합니다.
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 앱 템플릿에 포함되어 있습니다.