Most of the examples/tutorials for interop have shown copying a buffer to the CPU then putting that into a WinForm (I use C# except for kernel code). A compute buffer can be created for OpenCL to do the operations, but what I really want is the pixel buffer pointer that is going to end up on screen so that it doesn't involve an extra copy step. I don't know of any way to obtain this buffer's memory address. Essentially I would like to directly render screen output with OpenCL. The only other method I have seen is to clEnqueueAcquireGLObjects / clEnqueueReleaseGLObjects / clCreateFromGLTexture2D with an existing GL texture, but then you need to still copy the resulting texture into the back buffer, with various other overhead in the whole process. I am trying to create a ray-tracer where each compute thread evaluates the final color of 1 pixel into the buffer. It seemed like shaders run in a more limited context whereas I need the entire world data accessible to the kernel.