OpenCL 图像对象数据填充

图像对象可以使用如下函数来实现数据填充:

cl_int clEnqueueFillImage (cl_command_queue command_queue,
                                cl_mem image,
                                const void *fill_color,
                                const size_t *origin,
                                const size_t *region,
                                cl_uint num_events_in_wait_list,
                                const cl_event *event_wait_list,
                                cl_event *event)
  • 参数command_queue为填充命令所要插入的队列。command_queue和image必须位于同一OpenCL上下文中。

  • 参数image为一个有效的图像对象。

  • 参数f ill_color为填充色。如果image通道数据类型不是归一化带符号或无符号整型,则它是4元RGBA浮点颜色值;如果image通道数据类型是非归一化带符号整型,则它是4元带符号整型值;如果image通道数据类型是非归一化无符号整型,则它是4元无符号整型值。

  • 参数origin定义了所要填充区域的起始位置(x,y,z),单位为像素;3维图像阵列,定义了图像索引(2)以及图像起始位置(x,y);2维图像阵列,(x,y,z)定义的是起始位置(x,y)及图像索引;对于1维图像阵列,是(x)以及图像索引。如果image是2维图像对象,origin[2]必须是0;如果image为1维图像对象或1维图像缓冲区对象,origin[1]和origin[2]都必须是0;如果image是1维图像阵列对象,则origin[2]必须为0,origin[1]是图像在阵列中的索引;如果image是2维图像阵列对象,则origin[2]是图像在阵列中的索引。

  • 参数region定义了要填充区域的大小(width,height,depth),单位为像素;3维图像阵列,定义了图像个数(depth)以及填充区域大小(width,height);2维图像阵列对象,定义了填充区域(width,height);对于1维图像阵列对象,定义了填充区域(width)。如果image是2维图像对象或1维图像阵列对象,region[2]必须是1。如果image是1维图像或2维图像缓冲区对象,region[1]和region[2]都必须是1。

如下代码分配了2维图像对象,并将所有值填充为黑色(0):

……
char fill_value = 0;
size_t origin[3] = {0, 0, 0};
size_t region[3] = { width, height, 1};
clEnqueueFillImage(context, imageobject, &fill_value, origin,
                      region, 0, NULL, NULL);
……
赞(0)
未经允许不得转载:极客笔记 » OpenCL 图像对象数据填充
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址