javascript - webcl 和 webgl 不能同时工作

标签 javascript html firefox webgl webcl

Stack Overflow 用户您好!

我一直在到处寻找关于我的问题的信息很少(实际上没有)。我努力不问已经被问过的问题,但似乎我是第一个遇到这个问题的人。

我已在 Firefox 上安装了 WebCL 扩展。 (我已经在版本 31、32 和 33 aurora 上尝试过)

我还在 Chrome 和 Firefox 上启用了 WebGL。

我已经编写了基本的 OpenGL 程序,可以在我的本地计算机上渲染盒子和其他东西。 我已经成功编译、链接并运行了一个示例 OpenCL 程序,该程序使用 GPU 在缓冲区中生成字符串“Hello world”并将其打印在我的本地计算机上。

我什至能够在 Chrome 和 Firefox 中运行 WebGL 示例。 我还可以运行不需要 WebGL 的 WebCL 示例。

现在提前澄清一下,我只关心 Firefox。 我的 Chrome 浏览器目前没有 WebCL 功能,并且 使用 WebCL 设置 Firefox 变得更加容易。我只提到了 Chrome 暗示 WebGL 确实可以在我的计算机上的多个浏览器上按预期工作。

问题是,奇怪的是,如果我在 WebGL 之前运行 WebCL 示例,WebGL 会认为没有图形驱动程序,直到 Firefox 重新启动。

同样,如果我在 WebCL 之前运行 WebGL 示例,则在重新启动 Firefox 之前,WebCL 将无法在我的计算机上找到 OpenCL 驱动程序。

我只在 Firefox 中安装了 WebCL 扩展,没有安装其他任何东西。 当使用任何这些服务时,终端不会提示。

当前正在运行

Distro: Arch Linux x86_64
Kernel version: Linux 3.16.1-1-ARCH
GPU: AMD Radeon HD 7850

如果有人有解决此问题的经验,我将非常感谢您的帮助。 如果我不知何故错过了一个关于这个问题的堆栈溢出问题,我将非常感谢重定向。

最佳答案

我同时使用了WebGL和WebCL,尽管是在Windows上,所以一般来说绝对是可能的。这听起来像是您的特定平台或系统的问题。抱歉,我没有完全提供帮助,但至少我可以证明它在某些地方有效。

对于KHR_gl_sharing,即WebGL和WebCL都工作时共享一个内存缓冲区。例如,假设您使用 WebCL 修改纹理,然后希望 WebGL 绘制该纹理。您可以直接告诉 WebCL 在 WebGL 缓冲区上进行操作,而不是通过 WebCL 将 GPU 中的副本排队到 JavaScript,然后将其直接复制回 GPU 以用于 WebGL。不会对 PCIe 总线造成影响。

这对你的问题没有帮助——它假设 WebGL 和 WebCL 都正常工作。此外,Mozilla(Firefox 的开发者)不允许扩展程序访问 WebGL 缓冲区,因此诺基亚的 WebCL 插件无论如何都无法执行 KHR_gl_sharing。这是原生集成 WebCL 的浏览器规范,遗憾的是目前没有 vendor 对此感兴趣(主要是由于开发人员缺乏 OpenCL 采用)。不过他们肯定想要 GPU 计算,所以我们将看看他们选择什么。 WebCL 2.0? 2.1/3.0/2.0 + ARB 扩展中的 WebGL 计算着色器?或者,考虑到开发者施加的足够压力,他们可能会恢复原来的决定并支持 WebCL?谁知道呢!

希望这有帮助!

关于javascript - webcl 和 webgl 不能同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25655998/

相关文章:

python - 使用 Selenium/WebDriver 和 Python,如何抑制共享摄像头和麦克风的提示?

带有递减参数的javascript递归

javascript - 是否可以在不使用查询字符串的情况下传递 webpack 条目配置选项?

android - 文本对齐对齐和最后一行右对齐不适用于从右到左的语言

css - Angular 表达式没有得到评估

html - 在 Firefox 中设置 <select> 的颜色不起作用

windows - 如何处理 print- 和 "Save Print output as"浏览器窗口?

javascript - 将对象属性值转换为 float

javascript - 发送上传的文件和其他数据,两者都使用一个ajax调用

jquery - 如何修复 Bootstrap 轮播尺寸?