Сбой UWP при переходе с XAML на D3D в Unity3D

Я пытаюсь позвонить из XAML в код D3D, скомпилированный в Unity для устройства HoloLens. Для этого я стараюсь следовать инструкциям этого поста.

  • Я скомпилировал проект Unity в версии Unity2017.2.f03 в XAML с выбором Смешанной реальности (поддерживается виртуальная реальность)
  • Я добавил свой XAML в App.cs. Поэтому для этого вместо вызова MainPage я вызываю Myown XAML Page для выполнения каких-либо задач.

private void InitializeUnity(string args)
        {

 if UNITY_WP_8_1 || UNITY_UWP
            ApplicationView.GetForCurrentView().SuppressSystemOverlays = true;
     endif

     if UNITY_WP_8_1
                StatusBar.GetForCurrentView().HideAsync();
     endif


                appCallbacks.SetAppArguments(args);
                Frame rootFrame = Window.Current.Content as Frame;

                // Do not repeat app initialization when the Window already has content,
                // just ensure that the window is active
                if (rootFrame == null && !appCallbacks.IsInitialized())
                {
                    rootFrame = new Frame();
                    Window.Current.Content = rootFrame;
    if !UNITY_HOLOGRAPHIC
                 //  Diego commented this line and discommented
                    Window.Current.Activate();
    endif
                  //  rootFrame.Navigate(typeof(MainPage));
                    //**Here is where I update my code**
                    //**Here is where I update my code**
                     //**Here is where I update my code**
                    rootFrame.Navigate(typeof(MyOwnPage));
                }

                Window.Current.Activate();
            }`

На странице Myown, когда я заканчиваю свои дела, я пытаюсь вызвать Unity3D, поэтому я использую функции, предложенные в блоге.


 private async Task CreateNewHoloWindowAsync()
        {
            try
            {
                var appViewId = MainAppViewId = ApplicationView.GetForCurrentView().Id;

                var _newCoreAppView = CoreApplication.CreateNewView();

                await _newCoreAppView.Dispatcher
                    .RunAsync(CoreDispatcherPriority.Low,
                  async () =>
                  {
                      var frame = new Frame();
                      Window.Current.Content = frame;
                      frame.Navigate(typeof(MainPage));

                      _newCoreAppView.CoreWindow.Activated += WindowActivated;

                      _newCoreAppView.CoreWindow.Activate();


                      var res = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(
                          ApplicationView.GetForCurrentView().Id,
                          ViewSizePreference.Default, appViewId,
                          ViewSizePreference.Default);

                      _newCoreAppView.CoreWindow.Activated += WindowActivated;

                      _newCoreAppView.CoreWindow.Activate();
                  });
            }
            catch (Exception ex)
            {

                var dialog = new MessageDialog(ex.Message);
                await dialog.ShowAsync();
            }
        }

        private void WindowActivated(object sender, WindowActivatedEventArgs e)
        {
            try
            {
                if (e.WindowActivationState == CoreWindowActivationState.CodeActivated
                    || e.WindowActivationState == CoreWindowActivationState.PointerActivated)
                {
                    AppCallbacks.Instance.SetInitialViewActive();
                    // Only need to mark initial activation once so unregister ourself
                    CoreWindow coreWindowSender = sender as CoreWindow;
                    coreWindowSender.Activated -= WindowActivated;

                }
            }
            catch (Exception ex)
            {

                var dialog = new MessageDialog(ex.Message);
                dialog.ShowAsync();


            }
        }

Кажется, все идет хорошо, но когда скомпилированный код Unity d3d запускается в новом окне, он неожиданно завершает работу с исключением: -2147483645 (0x80000003). Больше информации нет. Я думаю, что мне не хватает некоторого кода с обратными вызовами, но у меня нет такого опыта в UWP. Какой-нибудь код, который может мне помочь?

0 ответов

Другие вопросы по тегам