我使用 Brad Larson 的 GPUImage 库。
GPUImageBulgeDistortionFilter 在图像上工作正常。但是 GPUImagePinchDistortion 过滤器在原始图像上以圆形切割呈现效果。这与原始图像不平滑融合。
任何人都可以提供解决方案吗?
好的,解决了..以下是最终的着色器,以获得捏合效果的平滑混合..
highp vec2 textureCoordinateToUse = vec2(textureCoordinate.x, (textureCoordinate.y * aspectRatio + 0.5 - 0.5 * aspectRatio));
highp float dist = distance(center, textureCoordinateToUse);
textureCoordinateToUse = textureCoordinate;
if (dist < radius)
{
textureCoordinateToUse -= center;
highp float percent = 1.0 + ((0.5 - dist) / 0.5) * scale;
textureCoordinateToUse = textureCoordinateToUse * percent;
textureCoordinateToUse += center;
//modification start
highp vec2 textureCoordinateDiff = textureCoordinate - textureCoordinateToUse;
textureCoordinateToUse = textureCoordinateToUse + textureCoordinateDiff*(dist/radius);
//modification end
gl_FragColor = texture2D(inputImageTexture, textureCoordinateToUse );
}
else
{
gl_FragColor = texture2D(inputImageTexture, textureCoordinate );
}