GPUImage源码解读(十九)

本文深入探讨了GPUImageFilterGroup的特性和用法,该类继承自GPUImageOutput并实现GPUImageInput协议,能作为独立滤镜参与图像处理流程。文章详细介绍了其属性和方法,包括如何管理滤镜链、添加滤镜以及处理帧更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GPUImageFilterGroup继承自GPUImageOutput ,实现了GPUImageInput协议。因此,可以自身可以作为独立的滤镜参与响应链中。相比GPUImageFilterPipeline,GPUImageFilterGroup功能更强大。
- 属性

//滤镜链最后一个效果
@property(readwrite, nonatomic, strong) GPUImageOutput<GPUImageInput> *terminalFilter;
//滤镜链头效果 可以是多少
@property(readwrite, nonatomic, strong) NSArray *initialFilters;
//当前忽略处理的Target
@property(readwrite, nonatomic, strong) GPUImageOutput<GPUImageInput> *inputFilterToIgnoreForUpdates;
  • 方法
// Filter management
// 增加滤镜
- (void)addFilter:(GPUImageOutput<GPUImageInput> *)newFilter;
//取到指定滤镜
- (GPUImageOutput<GPUImageInput> *)filterAtIndex:(NSUInteger)filterIndex;
//滤镜总个数
- (NSUInteger)filterCount;
  • 其它代码
// 增加滤镜
- (void)addFilter:(GPUImageOutput<GPUImageInput> *)newFilter;
- (GPUImageOutput<GPUImageInput> *)filterAtIndex:(NSUInteger)filterIndex;
- (NSUInteger)filterCount;

// 增加滤镜
- (void)addFilter:(GPUImageOutput<GPUImageInput> *)newFilter;
{
    [filters addObject:newFilter];
}

// 获取滤镜
- (GPUImageOutput<GPUImageInput> *)filterAtIndex:(NSUInteger)filterIndex;
{
    return [filters objectAtIndex:filterIndex];
}

// 滤镜数量
- (NSUInteger)filterCount;
{
    return [filters count];
}

//
- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex;
{
    for (GPUImageOutput<GPUImageInput> *currentFilter in _initialFilters)
    {
        if (currentFilter != self.inputFilterToIgnoreForUpdates)
        {
            [currentFilter newFrameReadyAtTime:frameTime atIndex:textureIndex];
        }
    }
}

// 设置帧缓存对象
- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex;
{
    for (GPUImageOutput<GPUImageInput> *currentFilter in _initialFilters)
    {
        [currentFilter setInputFramebuffer:newInputFramebuffer atIndex:textureIndex];
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值