2012-09-24 121 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