使用 OpenCL 2.0读取写入图像

分享于 

1分钟阅读

应用开发

  繁體

介绍

图像可以声明为"CL_MEM_READ_WRITE",但是一旦图像传递给内核,它必须是"__read_only"或"__write_only"

input1 = clCreateImage(
oclobjects.context,
CL_MEM_READ_WRITE|CL_MEM_COPY_HOST_PTR,
&format,
&desc,
&input_data1[0],
&err );
SAMPLE_CHECK_ERRORS( err );
代码1.图像缓冲区可以用CL_MEM_READ_WRITE创建
__kernel void Alpha( __read_write image2d_t inputImage1, 
__read_only image2d_t 
inputImage2, 
uint width, 
uint height, float alpha, float beta, int gamma )
代码2. OpenCL 2.0引入了在内核中读取和写入图像的能力

样例概述

此示例采用两个Windows位图图像"input1.bmp"和"input2.bmp",并将它们放入图像缓冲区,然后,这些图像基于alpha值,计算像素方程中的权重因子,可以作为选项传入。

图1.使用Alpha值0.840 89642

图像必须是24/32位图像,输出为24-bit图像,图像的大小必须相同,图像也是ARGB格式,因此在加载时要考虑到这一事实。

图2.使用Alpha值为0.324 53

ARGB转换为RGBA。


相关文章