Создание SpatialSurfaceObserver с помощью WRL
Я пытаюсь использовать класс 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", но не совсем понял, как их использовать и подходят ли они для моего случая.
Есть идеи, что мне не хватает?
1 ответ
Не какая-то экспертиза здесь, но одна идея, чтобы попробовать.
ABI::Windows::Foundation::ActivateInstance(HStringReference(RuntimeClass_Windows_Perception_Spatial_Surfaces_SpatialSurfaceObserver).Get(), &observer);
Не могли бы вы попробовать позвонить
::RoActivateInstance(HStringReference(RuntimeClass_Windows_Perception_Spatial_Surfaces_SpatialSurfaceObserver).Get(), &observer);
Некоторые ссылки, которые могут быть полезны: