我想使用OL3-Cesium在我的WPF应用程序中使用WebBrowser
控件显示globe视图。
示例html文件在我的IE 11浏览器中运行正常,但如果我通过WebBrowser
控件运行相同的文件,则会出现错误,说明浏览器支持WebGL但初始化失败'在Cesium.js。
我通过在注册表中编辑本地计算机中的密钥使我的WPF应用程序与IE 11兼容,但它仍然无效。 请帮我解决一下。
答案 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应用程序:
答案 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)