CGPixel 是一个适用于 iOS 的GPU加速OpenGL处理库
SDK 的 Github 地址:https://github.com/cgeffect/CGPixel
感谢 GPUImage https://github.com/BradLarson/GPUImage
输入源
- CGPixelImageInput
- CGPixelPixelBufferInput
support: NV12/32BGRA - CGPixelRawDataInput
support: NV12/NV12/BGRA/RGBA/I420 - CGPixelTextureInput
- CGPixelVideoInput
- CGPixelCameraInput
输出源
- CGPixelImageOutput
- CGPixelPixelBufferOutput
- CGPixelViewOutput
- CGPixelRawDataOutput
- CGPixelTextureOutput
- CGPixelVideoOutput
UIImage *sourceImage = [UIImage imageNamed:@"rgba"];
CGPixelImageInput *inputSource = [[CGPixelImageInput alloc] initWithImage:sourceImage];
CGPixelFilter *filter = [[CGPixelFilter alloc] init];
CGPixelViewOutput * paintview = [[CGPixelViewOutput alloc] initWithFrame:frame];
[inputSource addTarget:filter];
[filter addTarget:paintview];
[inputSource requestRender];
模拟器不支持fast texture upload, 使用真机运行 iOS11以上, Xcode 13及其以上
Metal实现滤镜渲染CGMetal
没啥历史包袱建议直接上metal, Api简单, 健壮, 性能强劲!!!
现代最新版的一些图形api, 包括vulkan/metal 都有相同的设计理念, opengl是面向过程的, metal是面向对象的, 最要命的是opengl天生不适合多线程并发, 线程和上下文绑定 接下来两个计划:
- GL线程单独抽离出来, 和渲染完全分开
- 把opengl的渲染流程改成和metal相似