如何使用OpenGL将OpenCL计算像素绘制到屏幕上?

Rob*_*ock 13 opengl pixel opencl

我不想用OpenCL做一些计算过的pixelart,直接在显示器上显示它而不需要CPU往返.我可以使用OpenCL与OpenGL的互操作性,并写入GPU的纹理库并使用OpenGL显示纹理.我想知道最好的方法是什么,因为我不需要任何3D东西,只需2d pixelart.

Nic*_*las 14

最好的方法是使用OpenCL/OpenGL互操作,如果您的OpenCL实现支持它.这允许OpenCL访问某些OpenGL对象(缓冲区对象和纹理/渲染缓冲区).您将无法直接访问默认的OpenGL帧缓冲区(即:显示),但您将能够访问绑定到帧缓冲区对象的图像.从那里,您可以在OpenGL中对默认帧缓冲区执行帧缓冲区blit.什么都不会触及CPU内存.

您必须查看CL/GL interop上的细节才能了解详细信息.基本思想是在OpenGL中创建一个渲染缓冲区(绑定到FBO).然后将渲染缓冲区关闭到OpenCL,并将计算放入渲染缓冲区.完成后,执行a glBlitFramebuffer将数据从renderbuffer复制到默认的帧缓冲区,然后交换缓冲区以显示它.