从OpenCL内核读取生成的图像

从OpenCL内核读取生成的图像,opencl,Opencl,我有以下OpenCl内核代码: kernel void generateImage(global write_only image2d_t output_image) { const int2 pos = {get_global_id(0), get_global_id(1)}; write_imagef(output_image, (int2)(pos.x, pos.y), (float4)(1.0f, 0.0f, 0.0f, 0.0f)); } 如何在CPU端读取生成的图像

我有以下OpenCl内核代码:

kernel void generateImage(global write_only image2d_t output_image)
{
    const int2 pos = {get_global_id(0), get_global_id(1)};
    write_imagef(output_image, (int2)(pos.x, pos.y), (float4)(1.0f, 0.0f, 0.0f, 0.0f));
}
如何在CPU端读取生成的图像进行渲染?我使用的是纯C。还有一些不错的教程链接也不错。

是一个图像对象,相当于缓冲区对象的
clenqueueradbuffer()
函数,具有类似的语义。主要区别在于(2D)图像有一个“节距”——这是沿y轴移动1个像素时在内存中前进的字节数。(这不一定等于每像素的宽度乘以字节数,但如果目标具有特殊的存储/对齐要求,则可以更大。)

与缓冲区对象的情况一样,另一种方法是使用内存映射图像

一旦宿主程序能够访问映像,您将如何进一步处理它取决于您正在尝试做什么以及您正在为哪个平台开发