【问题标题】:Mix OpenCL with OpenGL将 OpenCL 与 OpenGL 混合使用
【发布时间】:2011-04-29 16:31:16
【问题描述】:

可以在一个程序中同时使用 OpenGL 和 OpenCL 吗?两者都在 GPU 上运行,恐怕 OpenCL 和 OpenGL 之间的切换是如何在“后台”处理的(例如,寄存器被覆盖)。

我正在使用带有一些 nVidia 图形 8k 的计算机上使用 Linux,因此我可以使用在 CUDA 之上实现的 OpenCL。

【问题讨论】:

    标签: linux opengl opencl


    【解决方案1】:

    “在一个程序中同时使用OpenGL和OpenCL可以吗?两者都在GPU上运行,我担心OpenCL和OpenGL之间的切换是如何在“后台”中处理的

    不用太担心,您可以创建一个由两个 API 共享的上下文,您还可以从 OpenGL 缓冲区创建 OpenCL 缓冲区,因此 API 之间的数据传输没有开销。请继续工作,并告诉我们互操作性的优势是什么。计算由内核完成,渲染由OpenGL完成。

    我提供了一些可能对你有帮助的点赞。

    http://www.dyn-lab.com/articles/cl-gl.html

    http://enja.org/2010/08/27/adventures-in-opencl-part-2-particles-with-opengl/

    http://www.cmsoft.com.br/index.php?option=com_content&view=category&layout=blog&id=99&Itemid=150

    http://www.cmsoft.com.br/index.php?option=com_content&view=category&layout=blog&id=140&Itemid=199

    OpenCL research/ academic papers

    http://rastergrid.com/blog/category/programming/graphics/

    http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=245351

    最好的问候 梅加拉杰。

    【讨论】:

      【解决方案2】:

      是的,你可以

      OpenCL 1.1 包含重要的新功能,包括::

      通过将 OpenCL 事件对象链接到 OpenGL 栅栏同步对象来有效共享图像和缓冲区,改进了 OpenGL 互操作性

      http://www.khronos.org/opencl/

      【讨论】:

      • 要注意的一点(实际上是我绊倒的一点)是您必须从您的 OpenGL 上下文中获取 OpenCL 上下文...否则对象共享将不起作用。
      • @Florian:最重要的评论! (...而且,也是 CL/GL 互操作中最烦人的特性)。
      【解决方案3】:

      是的,没关系,你甚至可以在 OpenCL 和 OpenGL 之间共享数据。

      【讨论】:

      • 在哪里可以阅读有关在两种解决方案之间共享数据的详细信息?
      • 查看 CL 规范的附录关于从 GL buffersn 创建 CL 缓冲区并查看 CL_KHR_gl_sharing 扩展。
      猜你喜欢
      • 1970-01-01
      • 2011-07-10
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      相关资源
      最近更新 更多