你好堆栈溢出用户!
我一直在到处找我的问题(实际上没有)。我尽量不去问那些已经被问过的问题,但似乎我是第一个遇到这个问题的人。
我已经在Firefox上安装了WebCL扩展。
(我在31、32和33版极光上试过)
我也在Chrome和Firefox上启用了WebGL。
我已经编写了基本的OpenGL程序,可以在我的本地机器上渲染盒子和东西。
我已经成功地编译、链接并运行了一个示例OpenCL程序,该程序使用GPU在缓冲区中生成字符串“Hello world”,并将其打印到本地计算机上。
我甚至可以在Chrome和Firefox中运行WebGL示例。
我也可以运行不需要WebGL的WebCL示例。
现在我只想事先澄清一下,我只关心火狐。
我的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_共享,即在WebGL和WebCL工作时共享一个内存缓冲区。例如,假设您使用WebCL修改一个纹理,然后希望WebGL绘制该纹理。您可以告诉WebCL在WebGL缓冲区上操作,而不是通过WebCL将GPU的副本排队到JavaScript,只将其复制回WebGL的GPU。不要摇晃您的PCIe总线。
这对您的问题没有帮助——它假定WebGL和WebCL都在工作。此外,Mozilla(Firefox的开发人员)不允许扩展访问WebGL缓冲区,因此诺基亚的WebCL插件无论如何也不能进行KHR_gl_共享。这是一个针对那些本机集成WebCL的浏览器的规范,不幸的是,目前没有供应商对此感兴趣(主要是由于开发人员没有采用OpenCL)。他们当然希望GPU计算,所以我们会看看他们选择什么。WebCL 2.0?2.1/3.0/2.0+ARB扩展中的WebGL计算着色器?或者,如果开发人员有足够的压力,他们可能会重新做出决定并支持WebCL?谁知道呢!
希望这有帮助!
关于javascript - webcl和webgl不能同时工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25655998/