2012-09-24 39 views
1

后返回黑色像素我使用GLKViewController与GLKView,对iOS5的正常工作,后IO6更新glReadPixels停止工作,并返回只有黑色像素。GLKViewController(GLKView)glReadPixels IO6

我看了一些关于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着色器proccess

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

都有助于被接受,由于之后录制的摄像头,

回答

0

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

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

+0

我正在使用OpenGL上的流程着色器从设备相机记录PixelBuffer的电影,我需要知道如何在iOS6上重新启用openGL的后台缓冲区(在iOS5上完美工作......) – GTSouza