【发布时间】:2017-05-06 21:44:59
【问题描述】:
我正在使用 Core Image 来实现我的自定义图像处理过滤器。内核有两个输入采样器参数:
kernel vec4 filterk(sampler image, sampler db)
最后一个采样器是一个查找表,不希望发生数据突变。 当我从 db sampler 检索值时,似乎应用了一些插值。
我已经使用 OpenGL 着色器在 Android 上实现了这个过滤器并设置了过滤模式 GL_NEAREST:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
设置这些参数后一切正常(设置 GL_LINEAR 时相反)。
这里documentation 表示 CISampler 的默认插值是双线性插值,并且还存在最近邻。
如何在 iOS SDK 上创建 CISampler 并将插值方法设置为最近邻?
附: 此外,Core Image Kernel Language documentation 说有一个 __table 关键字,它使采样器用作查找表。但是XCode在使用这个关键字时会报错:unknown type name '__table'。
附言
尝试使用 initWithTexture 创建 CIImage 并使用过滤属性已设置为 GL_NEAREST 的纹理。这也不起作用documentation 说 CIImage 会忽略过滤和包装模式,因为 CISampler 会覆盖它们。
【问题讨论】:
标签: ios macos cocoa core-image