IHolographicCameraInterop-Schnittstelle (windows.graphics.holographic.interop.h)
Die IHolographicCameraInterop-Schnittstelle ist eine Nano-COM-Schnittstelle, die zum Erstellen von Direct3D 12-Pufferressourcen für ein HolographicCamera-Windows-Runtime-Objekt verwendet wird. Dies ist ein Initialisierungsschritt für die Verwendung von Direct3D 12 mit Windows Mixed Reality. Mit dieser Schnittstelle kann Ihre Anwendung auch den Besitz von Inhaltspuffern für das Rendern erwerben, bevor sie mit der HolographicCameraRenderingParametersInterop-Schnittstelle committen.
Ihre Anwendung kann diese Schnittstelle verwenden, um holografisches Rendering mit Direct3D 12 zu initialisieren. Nano-COM ermöglicht die direkte Übergabe von Zeigern auf Direct3D 12-Objekte als Parameter für API-Aufrufe, anstatt ein Windows-Runtime Containerobjekt zu verwenden.
Ihre Anwendung verwaltet einen eigenen Pool holografischer Pufferressourcen zur Verwendung als Renderziele (Backpuffer) für jede HolographicCamera. Es kann bei Bedarf zusätzliche Puffer erstellen, um weiterhin reibungslos gerendert zu werden. Auf den meisten Geräten sind dies drei oder vier Oberflächen. Ihre Anwendung sollte mit mindestens zwei Puffern im Pool beginnen. Ihre Anwendung kann dynamisch erkennen, wann sie einen neuen Puffer erstellen muss, indem sie nach erfolglosen Versuchen sucht, puffert, die zuvor für die Präsentation committet wurden. Ihre Anwendung muss einen Puffer für eine HolographicCamera committen, die im HolographicFrame enthalten ist, es sei denn, die primäre Ebene ist für diese Kamera deaktiviert. In diesem Fall darf Ihre Anwendung keinen Puffer für diese Kamera committen.
Ein von einem HolographicCamera-Objekt erstellter Puffer kann nur mit diesem Objekt verwendet werden. Es sollte freigegeben werden, wenn die HolographicCamera veröffentlicht wird oder wenn das Direct3D 12-Gerät neu erstellt werden muss – je nachdem, was zuerst geschieht. Der Puffer darf sich nicht in der GPU-Pipeline befinden, wenn er freigegeben wird. Direct3D 12-Zäune sollten verwendet werden, um sicherzustellen, dass diese Bedingung erfüllt ist, bevor das Pufferobjekt freigegeben wird.
Vererbung
Die IHolographicCameraInterop-Schnittstelle erbt von der IInspectable-Schnittstelle .
Methoden
Die IHolographicCameraInterop-Schnittstelle verfügt über diese Methoden.
IHolographicCameraInterop::AcquireDirect3D12BufferResource Die IHolographicCameraInterop::AcquireDirect3D12BufferResource-Funktion ruft eine Direct3D 12-Pufferressource ab. |
IHolographicCameraInterop::AcquireDirect3D12BufferResourceWithTimeout Die IHolographicCameraInterop::AcquireDirect3D12BufferResourceWithTimeout-Funktion ruft eine Direct3D 12-Pufferressource mit einem optionalen Timeout ab. |
IHolographicCameraInterop::CreateDirect3D12BackBufferResource Erstellt eine Direct3D 12-Ressource zur Verwendung als Inhaltspuffer für die Kamera. |
IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource IHolographicCameraInterop::CreateDirect3D12HardwareProtectedBackBufferResource erstellt eine Direct3D 12-Ressource zur Verwendung als Inhaltspuffer für die Kamera. |
IHolographicCameraInterop::UnacquireDirect3D12BufferResource Die IHolographicCameraInterop::UnacquireDirect3D12BufferResource-Funktion hebt eine Direct3D 12-Pufferressource auf. |
Hinweise
Um diese Schnittstelle in C++/WinRT zu verwenden, queryInterface für die IHolographicCameraInterop-Schnittstelle aus dem HolographicCamera-Objekt .
winrt::com_ptr<IHolographicCameraInterop> spCameraInterop {
m_holographicCamera.as<IHolographicCameraInterop>() };
D3D12_RESOURCE_DESC bufferDesc { };
bufferDesc.Format =
SelectFormatUsingHolographicViewConfiguration(
m_holographicCamera.ViewConfiguration());
bufferDesc.SampleDesc.Count = 1;
bufferDesc.SampleDesc.Quality = 0;
bufferDesc.MipLevels = 1;
bufferDesc.Width = static_cast<UINT64>(
m_holographicCamera.ViewConfiguration().RenderTargetSize().Width);
bufferDesc.Height = static_cast<UINT64>(
m_holographicCamera.ViewConfiguration().RenderTargetSize().Height);
winrt::check_hresult(
spCameraInterop->CreateDirect3D12BackBufferResource(
m_deviceResources->GetD3D12Device(),
&bufferDesc,
&m_D3D12BackBuffer[m_contentBufferIndex]));
Sie können die HolographicViewConfiguration-API verwenden, um die verfügbaren Optionen für das Pufferformat zu bestimmen und Informationen zur Renderzielgröße für die entsprechende Ausgabe abzurufen, z. B. holographicDisplay. Wenn Ihre Anwendung die Puffergröße für Direct3D 12-Puffer von der standardmäßigen Renderzielgröße für holographicCamera ändern muss, sollte sie entweder eine neue Renderzielgröße mithilfe der HolographicViewConfiguration::RequestRenderTargetSize-Methode anfordern und Puffer mit der von dieser Methode zurückgegebenen Größe erstellen oder eine beliebige Größe auswählen und den Viewport wie im folgenden Absatz beschrieben überschreiben.
Ihre Direct3D 12-Anwendung kann eine von der Anwendung unabhängig ausgewählte Viewportgröße verwenden. In diesem Fall müssen Sie die HolographicCameraPose.OverrideViewport-Methode für jeden Frame aufrufen, um die Plattform über den zum Rendern verwendeten Viewport zu informieren.
Der folgende Codeauszug stammt aus der Windows Mixed Reality Direct3D 12-App-Vorlage, die Codebausteine für die meisten APIs enthält, die Windows.Graphics.Holographic.Interop.h
im Header bereitgestellt werden.
winrt::com_ptr<IHolographicCameraInterop> spCameraInterop =
m_holographicCamera.as<IHolographicCameraInterop>();
winrt::check_hresult(
spCameraInterop->CreateDirect3D12BackBufferResource(
spD3D12Device.get(),
&bufferDesc,
m_spD3D12BackBuffer[bufferSlot].put()));
Anforderungen
Unterstützte Mindestversion (Client) | Windows 10, Version 2004 (10.0; Build 19041) |
Unterstützte Mindestversion (Server) | Windows Server, Version 2004 (10.0; Build 19041) |
Kopfzeile | windows.graphics.holographic.interop.h |