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

时间:2011-07-10 22:48:15

标签: opengl opencl pixel

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

1 个答案:

答案 0 :(得分:14)

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

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