【问题标题】:Reading generated image from OpenCL kernel从 OpenCL 内核读取生成的图像
【发布时间】:2017-10-22 20:57:39
【问题描述】:

我有以下 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。还有一些不错的教程的链接会很棒。

【问题讨论】:

    标签: opencl


    【解决方案1】:

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

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

    一旦您的主机程序可以访问该图像,您将如何进一步处理该图像取决于您尝试执行的操作以及您正在开发的平台。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-06
      • 2017-11-15
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 2015-07-13
      • 1970-01-01
      相关资源
      最近更新 更多