是否可以将 OpenGL 渲染到 WebGL 上下文?
这是一个奇怪的问题,但是是否可以将 WebGL 上下文传递给浏览器插件,并让插件像绘制 OpenGL ES 2.0 上下文一样绘制它?
我听说这可能是可能的。
This is a strange question, but is it possible to pass a WebGL context to a browser plugin and have the plugin draw to it as it would to an OpenGL ES 2.0 context?
I have heard this might be possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根据浏览器(版本)的不同,这可能可以通过晦涩的、最低级别的修补黑客实现;我不推荐它。
但是有一种方法可以从插件中使用 WebGL 画布:WebGL 上下文是 DOM 的一部分,因此完全可以通过 DOM 使用 WebGL 上下文,并且由于插件可以完全访问 DOM,因此插件可以控制WebGL 上下文。对于 Java 小程序来说也是如此,这是一件非常好的事情,因为它允许在 Java 小程序中使用 OpenGL,而不需要网站访问者安装 JoGL 或允许不安全的访问。
Depending on the browser (version) this might be possible through obscure, lowest level tinkering hacks; I don't recommend it.
But there's a way to use a WebGL canvas from a plugin: The WebGL context it part of the DOM, so it is perfectly possible to use the WebGL context through the DOM, and since plugins have full access to the DOM, a plugin can control the WebGL context. The same holds true for Java applets, which is a really nice thing as it allows to use OpenGL in a Java applet without requiring the website visitor to install JoGL or allow insecure access.
我可以保证这在一般情况下是行不通的;在 Mac 上,至少你不能只跨进程传递 OpenGL 上下文,而且现在 Mac 上的大多数主要浏览器都在与网页不同的进程中运行插件。
I can guarantee this would not work in general; on the Mac at least you can't just pass OpenGL contexts across processes, and most of the major browsers now on the Mac run plugins in a different process from the web page.
Chrome 在 Windows 上通过 Direct3D 实现 WebGL。所以这永远不会起作用。无法保证任何 WebGL 上下文都是在桌面 OpenGL 实现之上实现的。
Chrome implements WebGL through Direct3D on Windows. So that's never going to work. There is no guarantee that any WebGL context is being implemented on top of a desktop OpenGL implementation.