Я пытаюсь использовать класс SpatialSurfaceObserver для смешанной реальности Windows. Я следил за этим: https://developer.microsoft.com/en-us/windows/mixed-reality/spatial_mapping_in_directx
Тем не менее, я попал в контрольно-пропускной пункт. В примере говорится, что я должен просто создать экземпляр следующим образом:
m_surfaceObserver = ref new SpatialSurfaceObserver ();
Тем не менее, я использую чистый C ++, без C #, без C ++ / CX и т. Д. До сих пор это не было проблемой, я ожидал использовать фабрику активации для создания экземпляра, но, насколько я могу судить, один для этого класса не содержит функции для создания экземпляра.
В основном я думал использовать это:
using namespace ABI::Windows::Perception::Spatial;
ComPtr<Surfaces::ISpatialSurfaceObserverStatics> observerFactory;
ABI::Windows::Foundation::GetActivationFactory(HStringReference(RuntimeClass_Windows_Perception_Spatial_Surfaces_SpatialSurfaceObserver).Get(), &observerFactory);
observerFactory->someCreatorFunction(...);
Но нет функции, которую я мог бы использовать.
Потом я нашел ActivateInstance и подумал, что должно работать:
ComPtr<Surfaces::ISpatialSurfaceObserver> observer;
ABI::Windows::Foundation::ActivateInstance(HStringReference(RuntimeClass_Windows_Perception_Spatial_Surfaces_SpatialSurfaceObserver).Get(), &observer);
Но это тоже не компилируется, всегда жалуется, что ISpatialSurfaceObserver не содержит члена «InterfaceType».
Я также столкнулся с «Make» и «MakeAndActivate», но не совсем понял, как их использовать и подходят ли они для моего случая.
Есть идеи, что мне не хватает?
Не какая-то экспертиза здесь, но одна идея, чтобы попробовать.
ABI::Windows::Foundation::ActivateInstance(HStringReference(RuntimeClass_Windows_Perception_Spatial_Surfaces_SpatialSurfaceObserver).Get(), &observer);
Не могли бы вы попробовать позвонить
::RoActivateInstance(HStringReference(RuntimeClass_Windows_Perception_Spatial_Surfaces_SpatialSurfaceObserver).Get(), &observer);
Некоторые ссылки, которые могут быть полезны:
Других решений пока нет …