我正在尝试将Cesium嵌入到WinForms或WPF应用程序内的WebBrowser控件中(使用IE 11)。作为测试,我正在使用此链接:
http://cesiumjs.org/Cesium/Build/Apps/CesiumViewer/index.html?stats=true
它“有效”,但比直接使用IE 11要慢得多。在IE 11中,一切都以60fps运行;在具有WebBrowser控件的简单WPF或WinForms应用程序中,它以4-6 fps运行。我一直无法追查问题的原因。这是一个空白的窗体或WPF面板,其中WebBrowser控件设置为填充整个窗格。我无法想象没有透明度或其他问题。我注意到,在Visual Studio嵌入式浏览器中访问上述链接具有相同的效果。 WebBrowser是否控制不是JIT JavaScript?这是一个WebGL问题吗?有没有办法我可以调试这个来弄清楚发生了什么?任何帮助将不胜感激。
答案 0 :(得分:12)
看看这个article:
事实证明,嵌入式浏览器使用的是IE7渲染引擎 默认情况下,即使安装了较新版本的IE。还有,GPU 渲染已关闭,因此浏览器使用软件渲染 仅
通过设置以下feature control registry keys:
来解决此问题
- 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 fps。仍然不如1000+ fishies的独立IE好,但是 相当不错!
答案 1 :(得分:2)
您需要更改这两个注册表项才能使其适用于所有用户
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 \ Software \ 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