Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCL与OpenGL互操作性的优势_Opengl_Opencl_Gpgpu - Fatal编程技术网

OpenCL与OpenGL互操作性的优势

OpenCL与OpenGL互操作性的优势,opengl,opencl,gpgpu,Opengl,Opencl,Gpgpu,当我们可以获得良好的速度与OpenGL,因为它使用纹理内存和许多内置的图形功能(混合,mip地图等) 为什么我们需要OpenCL(由于OpenCL缓冲区的缓慢)与OpenGL的互操作性,仅仅因为我们可以将渲染与计算结合起来,或者有任何好的优势,比如性能 我只是想知道这项技术的主要优点,有没有公开发表的论文表明,通过使用OpenGL与OpenCL的互操作性,他们的性能得到了提高,或者有任何证据表明,在速度和质量方面,OpenGL的性能得到了提高。OpenGL就是关于实时光栅化图形的。由于它的范围有

当我们可以获得良好的速度与OpenGL,因为它使用纹理内存和许多内置的图形功能(混合,mip地图等)

为什么我们需要OpenCL(由于OpenCL缓冲区的缓慢)与OpenGL的互操作性,仅仅因为我们可以将渲染与计算结合起来,或者有任何好的优势,比如性能


我只是想知道这项技术的主要优点,有没有公开发表的论文表明,通过使用OpenGL与OpenCL的互操作性,他们的性能得到了提高,或者有任何证据表明,在速度和质量方面,OpenGL的性能得到了提高。

OpenGL就是关于实时光栅化图形的。由于它的范围有限,因此可以针对该任务进行更多的优化,并且大多数硬件也是为此而设计的

OpenCL是关于通用计算的。折叠蛋白质。天气预报。高频交易。机器学习、SETI、信号处理、比特币挖掘等

但两者之间有很多交叉领域

首先,很多东西都有视觉组件。科学家可能也希望能够看到折叠的蛋白质/与之交互,例如,不必将GPU RAM中的所有数据复制到CPU的内存中,对其进行处理,使其成为可视格式,然后将其发送回GPU

游戏也可以使用OpenCL。拿一些像Minecraft的东西。如果您使用现代OpenGL(而不是Minecraft实际使用的OpenGL 1.3)制作Minecraft,您只需要将原始地图数据上传到GPU。使用带有几何体/细分着色器的单个过程将数据转换为立方体和其他形状,然后使用变换反馈捕获结果(只需运行一次)

但是Minecraft也有关于如何更新地图的各种规则。计算照明。种树。使水流动。爆炸TNT等。这是使用着色器无法真正做到的事情(或者一次通过也无法做到)。你可以在CPU上完成(Minecraft就是这么做的),但如果你看过人们一次引爆1000颗TNT的视频,你就会发现这种滞后现象非常严重。而且水流会导致大型服务器上的每个人都出现延迟。您可以使用OpenCL来完成,而不是将其发送到OpenGL,但如果它们链接在一起,则效率更高

您可以使用OpenCL来伪造新的OpenGL技术。例如,如果您有OpenCL,但没有几何体/细分着色器,那么您可以在OpenCL中这样做(当然,目前在现实中,这并没有那么有用,因为大多数使用过时OpenGL实现的系统也将缺少OpenCL支持)。有没有像镶嵌着色器这样有用但却不存在的东西

在OpenGL管道中,有很多视觉效果是无法实现的(至少不是很有效)。一个例子是。另一个是

还有其他一些东西可以用来帮助游戏/实时图形。例如,可以将其移出CPU。如果渲染管道/scenegraph本身也可以。这将显著减少CPU和GPU之间的调用数量,并使其更加并行。还有很多东西,比如光线投射、人工智能、路径发现等等。基本上,你计算出来的任何东西都只是为了直观地看到


最后,我确信还有很多以前没有人拥有的东西,但现在是可能的。随着硬件朝着这个方向发展,我们正在越来越多地推动并行算法。

我不是这个领域的专家,但我怀疑使用OGL+OCL是否能获得一些性能。当需要使用OCL时,需要切换上下文,这可能会损害性能。另一方面,一些算法更容易使用OpenCL中的通用“着色器”编写。@talonmies我正在寻找一个证据,证明为什么khronos补充了我不满意的前一个问题,我只是希望任何人都能告诉我,他们在哪里发表了一些论文,在哪里获得了高质量或高质量的成果speed@fen我不这样认为,在切换上下文时会有开销,因为它们共享上下文和缓冲区。谁能告诉我有没有关于这方面的文件。@Megharaj:这一切都很好(尽管我怀疑你在攻击风车)。但是你现在已经问了几乎相同的问题两次了,这并不都是好的……非常感谢你的回答,我一直在寻找这种类型的答案。是否有任何已发表的论文或文章在任何应用中从中获得了任何优势?再次感谢您的支持answer@Megharaj我不知道有哪篇论文显示了OpenCL->OpenGL与OpenCL->CPU->OpenGL直接集成的优势(我确信有很多关于OpenCL+OpenGL的文章没有具体的集成)。这将是一个性能提升。除了在CPU端需要额外的不必要的工作外,在没有直接集成的情况下,应该可以完成所有的事情,但有一些可能的例外情况,即开销可能太大(例如,从GPU->CPU->GPU传递所有scenegraph调用可能比在CPU上进行慢)。