Может ли приложение VS2015 Cordova запускать WebGL в эмуляторе VS Android?

Я осмотрелся и не могу найти ответ к следующему. Я хочу запустить некоторый 3D-контент в кросс-платформенном приложении. Я использую VS2015/Инструменты для Apache Cordova/Three.js/WebGL. Когда я отлаживаю свой проект VS2015 на рабочем столе (AnyCPU) и либо на удаленном устройстве iOS, либо на симуляторе iOS Mac, мое приложение создает холст, получает контекст WebGL, и я отправляюсь в гонки. Когда я использую VS2015 для отладки своего приложения в эмуляторе VS Android, canvas.getContext дает сбой, а Three.js выдает «Ошибка создания контекста WebGL».

Я загрузил (до VS2015) эмулятор VS Android с помощью Lollipop (5.0) и запустил его в автономном режиме (не из моего проекта Cordova). Когда я следую этим Инструкции по настройке эмулятора Android от MSDN (замените текущую версию Chrome на движок браузера эмулятора VS по умолчанию), эмулятор VS правильно размещать и отображать 3D-контент WebGL, доступный в Интернете. Но когда я пытаюсь заставить эмулятор VS разместить мой проект Cordova, он не может создать контекст WebGL и хромает.

Итак, мой вопрос заключается в следующем: есть ли способ настроить мой проект Cordova VS2015 для запуска и отладки в эмуляторе VS Android, а также чтобы эмулятор размещал мой 3D-контент WebGL? Или есть какой-то другой трюк для настройки эмулятора VS Android, чтобы он принимал и размещал мой проект WebGL с использованием движка с поддержкой WebGL? Тупик.


person pprchsvr    schedule 24.02.2016    source источник
comment
Из любопытства: какова аппаратная настройка вашего ПК (CPU/GPU)?   -  person Morrison Chang    schedule 25.02.2016
comment
@MorrisonChang Windows 10 64-битная версия; i7 930; Радеон 5970   -  person pprchsvr    schedule 25.02.2016
comment
Связанный пост: stackoverflow.com/questions/35318029/ со ссылкой на ветку ответов от команды WebView   -  person Morrison Chang    schedule 25.02.2016
comment
@MorrisonChang Спасибо за эти ссылки. Но я не вижу этих ресурсов, посвященных приложению Visual Studio Cordova WebGL, которое запускается и размещается в эмуляторе VS Android. Как и выше, я выяснил, как настроить эмулятор VS Android (работающий на моем оборудовании), чтобы он размещал содержимое WebGL из Интернета (образец с сайта babylonjs.com). Я просто не могу заставить свое приложение VS Cordova WebGL хорошо работать с эмулятором VS Android (и наоборот). Может быть, я упускаю вашу точку зрения. Еще раз спасибо, что не поленились предложить помощь.   -  person pprchsvr    schedule 25.02.2016
comment
Я думаю, что моя точка зрения заключается в том, что это может быть невозможно, поскольку я ожидаю, что команда MS просто взяла существующий код эмулятора веб-просмотра AOSP и применила свои изменения, но основные проблемы, на которые ссылается команда WebView, могут все еще быть на месте. Вы можете посмотреть Crosswalk, если использование устройства не является стартовым crosswalk-project.org/documentation/about/ и software.intel.com/en-us/android/blogs/2014/01/02/   -  person Morrison Chang    schedule 25.02.2016
comment
@MorrisonChang Хорошо. Еще раз большое спасибо за то, что нашли время, чтобы предложить помощь. Даже если эмулятор VS нельзя использовать прямо сейчас так, как я пытаюсь его использовать, по крайней мере, вы спасли меня от того, чтобы тратить больше времени в крысиной норе. Большое Вам спасибо.   -  person pprchsvr    schedule 25.02.2016
comment
Обновление @MorrisonChang: теперь я собираюсь посмотреть, работает ли плагин Cordova Crosswalk npmjs.com /package/cordova-plugin-crosswalk-webview вообще поможет. Большое спасибо еще раз.   -  person pprchsvr    schedule 25.02.2016


Ответы (1)


Я успешно заставил свое приложение VS2015 Cordova правильно работать в эмуляторе VS для Android, но путь был непрямым. Моррисон Чанг выражает огромную благодарность за указание на проект Crosswalk, который специально предназначен для устранения недостатков стандартного движка Android WebView, что наиболее важно для моего приложения, поверхностной реализации WebGL стандартного движка. Первой частью решения была установка плагина Cordova Crosswalk в моем Приложение Кордова. Первоначально VS2015 выдавал плохо описанную ошибку развертывания версий. Решением было просто увеличить номер версии моего приложения с «1.0.0» до «1.0.1», как в файле config.xml:

<widget xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:vs="http://schemas.microsoft.com/appx/2014/htmlapps" id="io.cordova.XXXXXXXXXXXX" version="1.0.1" xmlns="http://www.w3.org/ns/widgets" defaultlocale="en-US">

После развертывания проекта у моего приложения возникли проблемы с получением рабочего контекста WebGL от Crosswalk. Я решил эту проблему следующим образом. Мое приложение в настоящее время использует THREE r71, который создает контекст WebGL со следующим фрагментом кода в конструкторе THREE.WebGLRenderer:

        var attributes = {
        alpha: _alpha,
        depth: _depth,
        stencil: _stencil,
        antialias: _antialias,
        premultipliedAlpha: _premultipliedAlpha,
        preserveDrawingBuffer: _preserveDrawingBuffer
    };

    _gl = _context || _canvas.getContext( 'webgl', attributes ) || _canvas.getContext( 'experimental-webgl', attributes );

Crosswalk не нравится вызов THREE .getContext() со значениями «атрибутов» THREE по умолчанию. Если я не установлю для атрибута «глубина» значение «false», Crosswalk вообще не вернет контекст WebGL. Но если установить depth:false, эмулятор VS будет отображать перекрывающиеся сетки так, что это не будет иметь визуального смысла в моем приложении, потому что, подождите, буфера глубины не было. Так что я мог, по крайней мере, получить контекст WebGL с глубиной: ложь, но это отстой. Что, наконец, сработало для меня, так это вызвать .getContext вообще без атрибутов, например так:

    _gl = _context || _canvas.getContext( 'webgl' ) || _canvas.getContext( 'experimental-webgl' );

Это помогает мне. Мне придется переопределить конструктор THREE.WebGLRenderer и использовать сценарий платформы Android, но, по крайней мере, теперь у меня есть работающий контекст WebGL и работающее приложение. Я надеюсь, что вышеизложенное избавит кого-то еще от боли, через которую я только что прошел. Теперь, чтобы заставить отладчик подключиться к эмулятору....

person pprchsvr    schedule 26.02.2016