GLKViewController (GLKView) glReadPixels возвращает черные пиксели после iO6

Я использую GLKViewController с GLKView, на ios5 работает нормально, после обновления io6 glReadPixels перестал работать и возвращает только черные пиксели.

Я прочитал кое-что о preserveBackBuffer, но пока успеха

Моя настройка GLKView:

_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

if (!_context) {
    DLog(@"Failed to create ES context");
}

GLKView *view = (GLKView *)self.view;
view.context = _context;

Возможный путь к решению? (Я пытаюсь это здесь, но все еще не работает)

CAEAGLLayer * eaglLayer = (CAEAGLLayer*) view.layer;
eaglLayer.drawableProperties = @{kEAGLDrawablePropertyRetainedBacking : @(YES)};

Я использую glReadPixels для записи камеры после процесса шейдера

- (void)captureOutput:(AVCaptureOutput *)captureOutput 
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
   fromConnection:(AVCaptureConnection *)connection

Вся помощь будет принята, спасибо,

1 ответ

Согласно документации, вы должны использовать метод "снимка" GLKView, если вам нужно читать пиксели, а не glReadPixels. Из документов о "снимке":

Обсуждение: Когда вызывается этот метод, вид устанавливает среду рисования и вызывает ваш метод рисования. Однако вместо представления содержимого представления на экране они возвращаются в ваше приложение в виде изображения. Этот метод должен вызываться всякий раз, когда вашему приложению явно требуется содержимое представления; никогда не пытайтесь напрямую читать содержимое базового кадрового буфера, используя функции OpenGL ES.

Другие вопросы по тегам