I’m doing video processing with GPUImage2. When the app starts, I create a hexagonal grid and add it to my cameraView. The grid is fullscreen and consists of about 100 of hexagons. In general, what I’m trying to achieve is
For each frame I want to find an average color (in RGB or even better HSV) within each cell of the grid. When the color is determined, I want to draw something in the center of each hexagon depending on its average color.
I have an array with hexagons, each of them knows its vertexes’ coordinates and center. I also have an array with UIBezierPaths which contains bounds of these hexagons (just in case).
So my code looks like this
class ViewController: UIViewController {
    var hexagons = [HKHexagon]()
    var hexagonsBounds = [UIBezierPath]()
    let averageColorExtractor = AverageColorExtractor()
  override func viewDidLoad() {
        super.viewDidLoad()
        do {
            camera = try Camera(sessionPreset:AVCaptureSessionPreset1920x1080)
            camera.delegate = self
            cameraView.orientation = .landscapeLeft
            camera --> cameraView
            camera.startCapture()
            drawGrid()
        } catch {
            fatalError("Could not initialize rendering pipeline: \(error)")
        }
  }
}
extension ViewController: CameraDelegate {
    func didCaptureBuffer(_ sampleBuffer: CMSampleBuffer) {
        for hexagon in hexagons {
        }
    }
}
I guess didCaptureBuffer() should be the place to apply averageColorExtractor to each hexagon but don’t have an idea what to do next..
I am new to iOS development and it’s the first time I use GPUImage2… Please, guide me in the right direction.