c# - WPF网页浏览器控件中的OL3-Cesium

标签 c# wpf webbrowser-control openlayers-3 cesiumjs

我想使用 OL3-Cesium 在我的 WPF 应用程序中使用 WebBrowser 控件显示地球 View 。 示例 html 文件在我的 IE 11 浏览器中运行良好,但如果我通过 WebBrowser 控件运行相同的文件,它会在 Cesium.js 中显示“浏览器支持 WebGL 但初始化失败”的错误。

我通过在注册表中编辑本地计算机中的 key 使我的 WPF 应用程序与 IE 11 兼容,但它仍然不起作用。 请帮我解决一些问题。

最佳答案

您提到使用注册表项使 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/

关于c# - WPF网页浏览器控件中的OL3-Cesium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31335488/

相关文章:

仅在调试时捕获 C# 异常?

c# - 是否可以在变量名的名称中使用变量号?

c# - WebBrowser 在特定网页上停止响应,但 IE 没有

c# - 获取列表框选定的项目

c# - 后台工作人员的 UI 访问问题

winforms - 禁用从网页浏览器控件的拖放c#

c# - 如何强制 WebBrowser 控件使用新 session 或清除 session

c# - 无法让我的 Html <input> 按钮默认为我选择的颜色

c# - gridview edititem 模板内的日历控件

c# - 获取 HTML 文本字段并在 C# (cshtml) 中用作变量