在编写新的核心图像过滤器时,您需要使用核心图像内核语言编写内核,这是一种轻度变异的 OpenGL 着色器语言。你在运行时用类似这样的东西编译它们……</p>
NSString *myCode = ...
NSArray *kernels = [CIKernel kernelsWithString:myCode];
问题是任何语法错误,您只需返回 nil 而不是数组。记录在案的 API 并未提出获取诊断信息的机制。
如果您按照 Apple 文档中的建议在 Quartz Composer 中处理您的过滤器,您会注意到它可以为您提供语法错误信息。(这只适用于简单的过滤器。)
那么,如何获取错误内核源文件的诊断信息呢?
更新:根据具体情况,您可能会在控制台上看到格式化的行。如果您很幸运,那么您不必担心这一点,只需查找以下行:
8: error: in function kernel vec4 clipDetection (uniform in sampler, uniform in float)
8: error: unknown variable name: gratuitous
当然,如果你还需要掌握信息……</p>