【问题标题】:Is it possible to render OpenGL to a WebGL context?是否可以将 OpenGL 渲染到 WebGL 上下文?
【发布时间】:2023-09-07 19:20:01
【问题描述】:

这是一个奇怪的问题,但是否可以将 WebGL 上下文传递给浏览器插件并让插件像绘制到 OpenGL ES 2.0 上下文一样向其绘制?

我听说这是可能的。

【问题讨论】:

    标签: opengl opengl-es-2.0 webgl npapi


    【解决方案1】:

    根据浏览器(版本),这可能通过晦涩的、最低级别的修补黑客来实现;我不推荐它。

    但是有一种方法可以从插件中使用 WebGL 画布:WebGL 上下文是 DOM 的一部分,因此完全可以通过 DOM 使用 WebGL 上下文,并且由于插件可以完全访问 DOM,因此插件可以控制 WebGL 上下文。 Java 小程序也是如此,这是一件非常好的事情,因为它允许在 Java 小程序中使用 OpenGL,而无需网站访问者安装 JoGL 或允许不安全的访问。

    【讨论】:

      【解决方案2】:

      我可以保证这通常不会起作用;至少在 Mac 上你不能只是跨进程传递 OpenGL 上下文,而且现在 Mac 上的大多数主要浏览器都在与网页不同的进程中运行插件。

      【讨论】:

        【解决方案3】:

        Chrome 在 Windows 上通过 Direct3D 实现 WebGL。所以这永远行不通。不能保证任何 WebGL 上下文都是在桌面 OpenGL 实现之上实现的。

        【讨论】:

        • 我仍然不明白为什么 Google 会这样做。毕竟,必须翻译的不仅仅是 API 调用。它也是必须翻译的 GLSL 源代码,以及整个 Uniform、顶点属性语义和其他一些重要的东西。
        • DirectX 支持有时比某些驱动程序的 OpenGL 支持更好。
        • @echeese:虽然这是真的,但我想说谷歌在计算机行业拥有如此重要的地位,通过在 OpenGL 上创建 Chrome/Windows WebGL,他们可以轻松地迫使图形供应商获得他们的 OpenGL 驱动程序一起行动,只需不使用 DirectX。好吧,谷歌的口号是“不作恶”。但这并不意味着“做个好人!”
        • 这对他们来说更难协调。并非所有供应商都支持他们的一些旧硬件,也不是所有用户都会更新他们的驱动程序。简而言之,他们做的最简单的事情就是在 Windows 上使用 DirectX,这在某些配置上往往不会出现错误。让浏览器崩溃来向图形供应商证明一点是一件非常邪恶的事情。
        • @echeese:坦率地说,当人们报告我的一个程序“问题”时,这实际上是 OpenGL 驱动程序中的一个错误,然后我只是告诉他们,这不是我的程序中的错误,但在 OpenGL 驱动程序中,他们应向供应商投诉驱动程序质量。我通常自己报告一个错误,但让用户群做同样的事情会增加重力。
        最近更新 更多