将OpenGL纹理绑定到OpenCL缓冲区

将OpenGL纹理绑定到OpenCL缓冲区,opengl,interop,opencl,Opengl,Interop,Opencl,我正在做一些需要使用OpenGL进行渲染的项目,然后将输出纹理传递给OpenCL后处理。问题是我们的内核使用的是缓冲区,而不是图像,最终的输出也应该是缓冲区,因此将内核更改为使用image2d而不是缓冲区不是一个选项 当然,将OpenGL缓冲区/纹理映射到OpenCL上的相同类型是一项简单的任务,但是似乎没有直接的方法来映射OpenGL输出(纹理或renderbuffer对象)到OpenCL缓冲区,无需额外的步骤/内存分配,如将GL纹理数据复制到PBO或将CL图像复制到缓冲区等。能够将GL缓冲区

我正在做一些需要使用OpenGL进行渲染的项目,然后将输出纹理传递给OpenCL后处理。问题是我们的内核使用的是缓冲区,而不是图像,最终的输出也应该是缓冲区,因此将内核更改为使用image2d而不是缓冲区不是一个选项

当然,将OpenGL缓冲区/纹理映射到OpenCL上的相同类型是一项简单的任务,但是似乎没有直接的方法来映射OpenGL输出(纹理或renderbuffer对象)到OpenCL缓冲区,无需额外的步骤/内存分配,如将GL纹理数据复制到PBO或将CL图像复制到缓冲区等。能够将GL缓冲区对象绑定为帧缓冲区输出会很好,但到目前为止,我还没有发现类似的情况。我曾考虑将GL_纹理_缓冲区作为渲染目标,但OpenGL禁止将其与帧缓冲区一起使用


所以,问题是-是否有任何方法可以直接使用OpenGL渲染到顶点缓冲区对象,如果没有-将OpenGL纹理转换为OpenCL缓冲区最有效(时间/内存)的方法是什么?

有很多例子,这里有一个:@lll你误解了我一点。我知道如何将VBO绑定到OpenCL缓冲区,但问题是如何将纹理绑定到缓冲区。将GL纹理绑定到CL图像-正常。将总账缓冲区绑定到CL缓冲区-正常。但问题是关于纹理到缓冲区…
clCreateFromGLBuffer
clCreateFromGLTexture2D
将不起作用?我需要将现有
GL\u texture\u 2D
中的数据绑定到cl缓冲区中。我可以通过像
clCreateFromGLTexture2D
->
clEnqueueCopyImageToBuffer
这样的简单管道来实现,或者通过创建PBO并将CL缓冲区绑定到它来实现,但我试图避免这种复制和空闲内存分配。啊,好吧。。。我认为这或多或少是从CL更新GL纹理的标准方法,开销相当小。我这边唯一的建议可能是使用纹理共享或缓冲区共享;这里有一些简单的例子: