WPF Web浏览器控件中的OL3-Cesium

时间:2015-07-10 08:00:04

标签: c# wpf webbrowser-control openlayers-3 cesium

我想使用OL3-Cesium在我的WPF应用程序中使用WebBrowser控件显示globe视图。 示例html文件在我的IE 11浏览器中运行正常,但如果我通过WebBrowser控件运行相同的文件,则会出现错误,说明浏览器支持WebGL但初始化失败'在Cesium.js。

我通过在注册表中编辑本地计算机中的密钥使我的WPF应用程序与IE 11兼容,但它仍然无效。 请帮我解决一下。

2 个答案:

答案 0 :(得分:1)

您提到使用注册表项使WebBrowser更像IE11,但您可能需要多个注册表项。特别是:

  • FEATURE_BROWSER_EMULATION需要获得IE11兼容性并访问它提供的WebGL API
  • FEATURE_GPU_RENDERING需要在嵌入式窗口中启用硬件加速3D。

请注意,默认情况下,Cesium使用failIfMajorPerformanceCaveat,这意味着如果GPU渲染不可用,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/performance-issue-of-embedded-ie-browser-control-and-how-to-fix-it/

答案 1 :(得分:0)

我也有同样的问题。几乎所有建议的解决方案都涉及将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)