Iphone GLKViewController(GLKView)glReadPixels在iO6之后返回黑色像素

Iphone GLKViewController(GLKView)glReadPixels在iO6之后返回黑色像素,iphone,ios,graphics,eaglview,eaglcontext,Iphone,Ios,Graphics,Eaglview,Eaglcontext,我正在使用GLKViewController和GLKView,在IO5上工作正常,io6更新后glReadPixels停止工作,只返回黑色像素 我读了一些关于Backbuffer的文章,但是成功了吗 我的GLKView设置: _context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; if (!_context) { DLog(@"Failed to create ES context"); } G

我正在使用GLKViewController和GLKView,在IO5上工作正常,io6更新后glReadPixels停止工作,只返回黑色像素

我读了一些关于Backbuffer的文章,但是成功了吗

我的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 on在着色器处理后录制摄影机

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

接受所有帮助,谢谢,

根据文档,如果需要读取像素而不是glReadPixels,则应使用GLKView的“快照”方法。从有关“快照”的文档中:

讨论: 调用此方法时,视图将设置图形环境并调用您的图形方法。但是,视图的内容不是显示在屏幕上,而是作为图像返回到应用程序中。只要应用程序明确需要视图的内容,就应该调用此方法;切勿尝试使用OpenGL ES函数直接读取底层帧缓冲区的内容


我正在用PixelBuffer在openGL上的处理着色器后从设备摄影机录制一部电影,我需要知道如何在iOS6上和iOS5上重新启用openGL的后缓冲区工作得非常完美…对我来说,快照方法是完全不可靠的