17

我正在研究自定义图像过滤器项目。我遇到了一项具有挑战性的任务,我应该在其中应用扭曲的滤镜,如滑稽脸效果应用程序中所示。我想开发可用于滑稽面孔效果的前 3 个过滤器。

因此,为了实现这样的效果,我开始使用 GPUImageView GPUImage,在此,它使用搜索栏从中心扭曲图像。我已经实现了Bulge失真。但是有什么方法可以实现拖动过滤器,我可以通过拖动手势扭曲我的图像?

我们尝试搜索除 GPUImage 之外的任何其他第三方类。但是我们找不到有用的东西。

我们的查询如下:-

1)是否可以使用拖动手势应用拖动过滤器?(任何代码片段或参考可观)

2) 除 GPU 之外的任何其他第三方类可以帮助我们获得上述结果。

提前致谢!

在此处输入图像描述

4

1 回答 1

6

实现它的一种方法是使用附加纹理向片段着色器指定要应用的变形。当用户触摸图像以应用变形时,您可以从应用程序修改纹理内容。

GPUImageBulgeDistortionFilter扩展了 GPUImageFilter,它被设计为只使用一个纹理。

您需要复制纹理绑定 (glBindTexture) 并分配给 GPUImageFilter 中的片段着色器 (glUniform1i),使用 1 作为新纹理(而不是 0)。您还需要复制 glGetUniformLocation 并使用其他名称代替 inputImageTexture,例如 inputImageTexture2。

修改 GPUImageBulgeDistortionFilter 处的片段着色器或创建一个派生自 GPUImageBulgeDistortionFilter 的新类添加 "uniform sampler2D inputImageTexture2;\n" +

最后添加代码以使用 inputImageTexture2 纹素对同一片段着色器中 inputImageTexture 处的数据进行变形。

于 2017-11-08T18:00:22.007 回答