Skip to content

cgeffect/CGPixel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CGPixel

截屏2021-11-27 上午12 08 45

CGPixel 是一个适用于 iOS 的GPU加速OpenGL处理库

SDK 的 Github 地址:https://github.com/cgeffect/CGPixel

感谢 GPUImage https://github.com/BradLarson/GPUImage

image

image

输入源

  1. CGPixelImageInput
  2. CGPixelPixelBufferInput
    support: NV12/32BGRA
  3. CGPixelRawDataInput
    support: NV12/NV12/BGRA/RGBA/I420
  4. CGPixelTextureInput
  5. CGPixelVideoInput
  6. CGPixelCameraInput

输出源

  1. CGPixelImageOutput
  2. CGPixelPixelBufferOutput
  3. CGPixelViewOutput
  4. CGPixelRawDataOutput
  5. CGPixelTextureOutput
  6. 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简单, 健壮, 性能强劲!!!

PLAN

现代最新版的一些图形api, 包括vulkan/metal 都有相同的设计理念, opengl是面向过程的, metal是面向对象的, 最要命的是opengl天生不适合多线程并发, 线程和上下文绑定 接下来两个计划:

  1. GL线程单独抽离出来, 和渲染完全分开
  2. 把opengl的渲染流程改成和metal相似