OL3-Cesium в элементе управления веб-браузером WPF

Я хочу использовать OL3-Cesium для отображения земного шара в моем приложении WPF с использованием элемента управления WebBrowser. Пример html-файла отлично работает в моем браузере IE 11, но если я запускаю тот же файл через элемент управления WebBrowser, он выдает ошибку, говорящую, что «Браузер поддерживает WebGL, но инициализация не удалась» в Cesium.js.

Я сделал свое приложение WPF совместимым с IE 11, отредактировав ключ на локальном компьютере в реестре, но все равно это не сработало. Пожалуйста, помогите мне с некоторым решением.


person Community    schedule 10.07.2015    source источник


Ответы (2)


Вы упомянули, что WebBrowser работает как IE11, используя ключ реестра, но вам, вероятно, понадобится больше одного. Особенно:

  • FEATURE_BROWSER_EMULATION необходим для обеспечения совместимости с IE11 и доступа к API WebGL, который он предоставляет.
  • FEATURE_GPU_RENDERING необходим для включения аппаратного ускорения 3D во встроенном окне.

Обратите внимание, что Cesium по умолчанию использует failIfMajorPerformanceCaveat, а это означает, что если рендеринг с помощью графического процессора недоступен, Cesium предпочитает потерпеть неудачу, а не пытаться работать с программным рендерингом. Это можно переопределить, но результаты предсказуемо плохие, поэтому вместо этого используйте раздел реестра GPU.

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
    "MyApplication.exe" : REG_DWORD = 11
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_GPU_RENDERING
    "MyApplication.exe" : REG_DWORD = 1

Вот отличная статья, в которой объясняется, как использовать эти разделы реестра и встраивать приложения WebGL:

http://zett42.de/software/2013/04/04/проблема-производительности-встроенных-т.е.-управления-браузером-и-как-исправить-это/

person emackey    schedule 10.07.2015

У меня тоже была такая же проблема. Почти все предлагаемые решения включали настройку FEATURE_BROWSER_EMULATION на текущую установленную версию IE, но Cesium все равно возвращал ошибку The browser supports WebGL but initialization failed

Что сработало, так это полное отключение режима совместимости.

SetBrowserFeatureControlKey(
         "FEATURE_BROWSER_EMULATION",
         fileName,
         00000)

И, конечно же, все еще включаю FEATURE_GPU_RENDERING

SetBrowserFeatureControlKey(
         "FEATURE_GPU_RENDERING",
         fileName,
         1)
person Darrin Doherty    schedule 16.10.2015