首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载CiFilter时出现问题

加载CiFilter时出现问题
EN

Stack Overflow用户
提问于 2011-05-25 01:11:51
回答 2查看 969关注 0票数 1

这个问题可能也适用于其他第一次写CIFilter的人。我需要关于更新Mac (基于QTKitPlayer)的视频播放器QTKit应用程序以使用CIFilters的建议。我已经阅读了图像单元和核心图像指南。我已经使用CIPlugIn loadAllPlugIns成功地让应用程序加载并运行内置的CIFilters。

我还成功地编写了我的第一个CIFilter,将其包装为一个图像单元,并将其放入/Library/Graphics/Image Units中,我已经使用Quartz Composer成功地对其进行了测试,Quartz Composer加载并运行成功。我还成功地将它加载到Core Image Fun House中。

然而,修改后的QTKitPlayer应用程序无法加载我的CIFilter。断点显示所有内置CIFilters都已加载,但我的过滤器没有。

由于我是一个编写和使用CIFilters的新手,我担心我一定是错过了一些核心图像初始化代码,或者QTMovieView nib标志,或者编译器标志,或者别的什么。在调用loadAllPlugins之前,我需要做一些设置吗?代码如下:

CIPlugIn loadAllPlugIns;CIFilter *ciFilter = CIFilter filterWithName:@"MyDistortionWarp";

我检查它是否加载了:

NSArray *filterList = [CIFilter filterNamesInCategories:NSArray arrayWithObject:kCICategoryDistortionEffect];

在调试期间,我的CIFilter不会出现在我的QTKitPlayer派生的filterList中。但是,将相同的代码插入到Core Image Fun House src中,显示filterList确实包含我的过滤器。FunHouse还将ciFilter设置为过滤器,但我的应用程序仅设置为Nil。

我的QTKit应用程序缺少什么,它需要加载CIPlugin?

EN

回答 2

Stack Overflow用户

发布于 2011-07-23 15:09:23

感谢您的回复。我已经解决了这个问题。事实证明,这是XCode中的32位与64位构建问题。

我的项目是为发布版本设置的32位和64位插件二进制文件。但是,调试构建通常被设置为只构建“本机”二进制文件。由于这些项目要么是旧的,要么是修改过的示例代码项目,我花了一段时间才意识到问题出在旧的构建设置中,而不是新修改的代码中。

CIPlugIn loadAllPlugIns仅加载与应用程序二进制兼容的插件。因此,32位应用程序不会看到仅为64位构建的CIFilters。而且,64位应用程序不会看到仅为32位系统构建的插件。在我的例子中,FunHouse可以加载我的图像单元,而修改后的QTKitPlayer不能。我只需要修改项目的构建设置。

在升级到新的Mac、新的OSX和新的XCode之后,如果你遇到了微光地带的问题--检查你的构建设置。

票数 2
EN

Stack Overflow用户

发布于 2011-07-21 20:06:02

您确定为您的自定义筛选器使用正确的名称吗?

代码语言:javascript
复制
(CIFilter *ciFilter = [CIFilter filterWithName:@"MyDistortionWarp"];)

这必须是类名(CIFilterClass),而不是插件(或图像单元)的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6114211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档