我正在尝试建立一个自定义过滤器,这将扰乱图像的几何实时。我做了一个非常简单的warp内核,它将当前圆圈中的每个像素映射到中心像素。在恰好55次迭代之后,程序崩溃,说程序超出了GLES统一限制。我还注意到在崩溃之前的迭代次数总是接近55次。这些限制是关于什么以及如何克服这个问题?这个问题发生在内核接收参数的时候,没有参数它就能正常工作。有什么想法吗?
内核代码
"kernel vec2 simpleWarp(vec2 center) " +
"{ " +
" vec2 p = destCoord(); " +
" float dist = sqrt (dot( p - center, p - center) ); " +
" return dist < 50.0 ? center : p; " +
"} " ;发布于 2016-05-18 01:21:37
请在这个问题上提交一个雷达错误。
一种解决方法是在扭曲核心组之间插入传递核,以防止CI过度连接:
CIImage* applyPassThrough (CIImage *img)
{
static CIKernel *k = nil;
static NSString * const source =
@"kernel vec4 passThrough (sampler s, float v)\n"
"{ return sample(s, samplerCoord(s)+v); }\n";
static dispatch_once_t once;
dispatch_once(&once, ^{
k = [[CIKernel kernelWithString:source] retain];
});
return [k applyWithExtent:img.extent
roiCallback:^(int i, CGRect r) { return r; }
arguments:@[img, @0.0]];
}https://stackoverflow.com/questions/34794469
复制相似问题