Отвечая на ваш комментарий, чтобы добавить эффекты OpenGL к выходам камеры, вам нужно использовать AVFoundation, который был представлен в iOS 4. Это можно использовать для получения прямой передачи данных пикселей с камеры, которую вы можете загрузить в OpenGLв качестве текстуры - позволяя вам делать потом все, что вы хотите.
Если вы простите мне ссылку на ответ, который я давал в прошлом, базовый материал для начала получения подходящего буфера - здесь .
Вы получите CMSampleBuffers во вторичном потоке в методе делегата:
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
Вы можете использовать CMSampleBufferGetImageBuffer
, чтобы получить CVImageBuffer и откоторые используют комбинацию CVPixelBufferLockBaseAddress
CVPixelBufferGetBaseAddress
, CVPixelBufferGetBytesPerRow
и, возможно, CVPixelBufferGetWidth
и CVPixelBufferGetHeight
, чтобы получить массив C пикселей.В моем тестировании на iPhone 4 и iPhone 3GS буфер только когда-либо возвращался плотно упакованным (то есть без заполнения между строками), что означает, что он может быть немедленно загружен как GL_BGRA, поскольку расширение APPLE_texture_format_BGRA8888 поддерживается на всех iPhone дляdate.
Оттуда вам, очевидно, нужно выяснить, что делать с точки зрения вершинных и фрагментных шейдеров, в зависимости от того, есть ли у вас карта нормалей, карта рельефа, на которую вы действительно хотите повлиять на видимую форму (и,если это так, будь то из-за возмущения вершины или из-за наложения лучей) или что-то еще.