I wan't to do some calculated pixelart with OpenCL and display this directly on the display without CPU roundtripping. I could use interoperability of OpenCL with OpenGL and write to the texture-banks of the GPU and display the texture with OpenGL. I was wondering what would be the best way to do this, since I do not need any 3d stuff, just 2d pixelart.
The best way would be to use OpenCL/OpenGL interop, if your OpenCL implementation supports it. This allows OpenCL to access certain OpenGL objects (buffer objects and textures/renderbuffers). You won't be able to directly access the default OpenGL framebuffer (ie: the display), but you will be able to access an image bound to a framebuffer object. From there, you can, in OpenGL, do a framebuffer blit to the default framebuffer. Nothing will touch CPU memory.
You'll have to look up the specifics on CL/GL interop to learn the details however. The basic idea is that you create a renderbuffer in OpenGL (which you bind to an FBO). Then you hand that renderbuffer off to OpenCL, and do your computations into the renderbuffer. Once that's complete, you perform a glBlitFramebuffer
to copy the data from the renderbuffer to the default framebuffer, then swap buffers to display it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With