Ios 扭曲图像,使雨滴在屏幕上产生效果

Ios 扭曲图像,使雨滴在屏幕上产生效果,ios,opengl-es,core-image,Ios,Opengl Es,Core Image,我想让图像看起来像是屏幕上的雨滴一样扭曲 你知道我如何使用OpenGL或CoreImage实现这一点吗 我可以得到一个雨滴形状的深度图像,若这有帮助的话。否则,我真的不知道如何做到这一点,尤其是因为它们不是完美的圆形,而且我几乎没有OpenGL或Core图像的经验(尽管我可以设置缓冲区和内容,并进行一些简单的绘图)。我会使用水滴的高度(即与曲面的距离)作为控制纹理。使用落差的重心作为效果的中心点。我可以试着通过遮盖更大版本的背景来伪装它,但我认为这看起来不太好。不,简单地放大背景是完全错误的。对

我想让图像看起来像是屏幕上的雨滴一样扭曲

你知道我如何使用OpenGL或CoreImage实现这一点吗


我可以得到一个雨滴形状的深度图像,若这有帮助的话。否则,我真的不知道如何做到这一点,尤其是因为它们不是完美的圆形,而且我几乎没有OpenGL或Core图像的经验(尽管我可以设置缓冲区和内容,并进行一些简单的绘图)。

我会使用水滴的高度(即与曲面的距离)作为控制纹理。使用落差的重心作为效果的中心点。

我可以试着通过遮盖更大版本的背景来伪装它,但我认为这看起来不太好。不,简单地放大背景是完全错误的。对于光线跟踪软件包来说,这可能是一个简单的练习。我可能会把一些大致模拟它的东西放在一起,但它不会出现在你选择的技术中。你说“它不会出现在你选择的技术中”是什么意思?你能用另一种语言吗?我的意思是我不能用OpenGL或Core Image提供答案。它将是用Python编写的,因此我不确定它对您有多大用处,也不确定这些包的功能是否可以提供更简单的解决方案。如果你还感兴趣的话。关于重心的定位:一个控制纹理被用作一个参数。也就是说,对控件纹理进行采样以获得每像素参数值。在这种情况下,您可以使用它来传递凸出效果的强度贴图。谢谢,我想我现在得到了控制纹理。关于中心的问题是,我知道重心是什么,但就是不知道如何移动中心来产生凸起效应。我能看到的唯一方法是在应用效果之前移动纹理,然后将其向后移动。这肯定是错误的做法。下面是我目前拥有的简单代码:`vec2 texCoord=gl_texCoord[0].xy;vec2 normCoord=2.0*texCoord-1.0;浮动r=长度(标准坐标);r=r*平滑步长(-0.1,0.5,r);float phi=atan(normCoord.y,normCoord.x);normCoord.x=r*cos(φ);normCoord.y=r*sin(φ);texCoord=normCoord/2.0+0.5;gl_FragColor=纹理2d(tex,texCoord)`这里有一个使用控制纹理的置换示例:基本上,控制纹理的采样方式与“图像”纹理非常相同。但是,您使用的值不同。简单地说,您应该提供一个深度贴图作为控制纹理。PS:如果有帮助的话,你可以上传评论。天哪,我用顶点着色器做的很好!!我以前从未看过opengl(我对编程完全是新手),所以我非常高兴!)非常感谢你!!