简介
该程序对图像旋转一定的角度,角度大小可通过调节参数来控制。其实现方式和 No.6_1_OpenCLSampler 类似,都使用了 OpenCL 内置的采样器对象来访问图像数据。
要想旋转整个图像,我们需要对图像中的每个像素点执行旋转操作,这需要知道像素点的原始位置和旋转后的目标位置。本文描述如何对 2D 图像进行旋转,在执行内核函数时,将工作项的维度设置为 2,两个维度分别对应图像的宽度和高度,这样在内核执行时就能对所有的像素点执行旋转操作。完整源代码参见 No.2_OpenCLSampler。
实现
其实现和 No.6_1_OpenCLSampler
基本类似,都在荣耀8
上运行,不再赘述。这里着重描述内核代码的功能该如何实现。
将图像上的每个点看作是在以圆心为原点的圆上,圆心位置在图像的中心。如下图所示:
)。通过点
A来计算
A′`,三角函数展开如下: