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.