Производительность IE 11 WebGL медленная при использовании элемента управления WebBrowser

Я пытаюсь встроить Cesium в элемент управления WebBrowser внутри приложения WinForms или WPF (используя IE 11). В качестве теста я использую эту ссылку:

http://cesiumjs.org/Cesium/Build/Apps/CesiumViewer/index.html?stats=true

Он "работает", но намного медленнее, чем использование IE 11 напрямую. В IE 11 все работает со скоростью 60 кадров в секунду; в простом приложении WPF или WinForms с элементом управления WebBrowser он работает со скоростью 4-6 кадров в секунду. Я не смог найти причину проблемы. Это с пустой панелью формы или WPF с набором элементов управления WebBrowser для заполнения всей панели. Я не вижу прозрачности или других проблем. Я заметил, что переход к вышеуказанной ссылке внутри встроенного браузера Visual Studio имеет тот же эффект. Не управляет ли WebBrowser JIT JavaScript? Это проблема WebGL? Есть ли способ отладить это, чтобы выяснить, что происходит? Любая помощь будет принята с благодарностью.

Ответ 1

Посмотрите на статью :

Как оказалось, встроенный браузер использует движок рендеринга IE7 по умолчанию, даже если установлена ​​более новая версия IE. Кроме того, GPU рендеринг выключен, поэтому браузер использует рендеринг программного обеспечения только.

Это было исправлено установкой следующих системных ключей реестра элементов управления:

  • FEATURE_BROWSER_EMULATION - установить желаемую версию IE рендеринг двигателя
  • FEATURE_GPU_RENDERING - установить 1 для включения GPU рендеринга.

Эти ключи могут быть установлены под HKEY_LOCAL_MACHINE или HKEY_CURRENT_USER для конкретной программы (исполняемого имени), которая использует встроенный браузер. HKCU предпочтительнее, поскольку программа не нужна права администратора для записи в HKCU.

Итак, когда я установил FEATURE_BROWSER_EMULATION в 10000 (для IE10) и установил FEATURE_GPU_RENDERING до 1, производительность улучшилась до ~ 850 промыслов @ 60 кадров в секунду. Все еще не так хорош, как автономный IE с его 1000+ рыбками, но довольно улучшилось!

Ответ 2

Вам нужно будет изменить эти два ключа reg, чтобы они работали для всех пользователей.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

Для одного пользователя просто используйте

HKEY_CURRENT_USER\Программное обеспечение \Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

Добавив DWORD, убедитесь, что вы установили значение 11999, а не 11001, как сказано ниже, и оно должно установить его в режиме стандартов IE 11. Хотя он комментирует, что использование недопустимого значения установит его самым последним, поэтому установка его на 99999, вероятно, будет работать для следующих версий.

http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version