Я пытаюсь захватить видео с помощью AVCaptureSession, обработать видео в обратном вызове (в конце концов), а затем отобразить результаты в моем GLKView. Приведенный ниже код работает, но изображение в моем GLKView поворачивается на 90 градусов и сжимается на 50%.
glContext создается с помощью [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2];
Мой coreImageContext создается с помощью [CIContext contextWithEAGLContext: glContext];
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
{
// process the image
CVPixelBufferRef pixelBuffer = (CVPixelBufferRef)CMSampleBufferGetImageBuffer(sampleBuffer);
CIImage *image = [CIImage imageWithCVPixelBuffer:pixelBuffer];
// display it (using main thread)
dispatch_async( dispatch_get_main_queue(), ^{
// running synchronously on the main thread now
[self.coreImageContext drawImage:image inRect:self.view.bounds fromRect:[image extent]];
[self.glContext presentRenderbuffer:GL_RENDERBUFFER];
});
}
Вставка кода для выполнения и аффинного преобразования кажется неэффективной. Я пропускаю установочный вызов или параметр для предотвращения вращения и масштабирования?