2012-09-24 3 views
1

GLOSView에서 GLKViewController를 사용하고 있습니다. io6 업데이트 glReadPixels가 작동을 멈추고 검정 픽셀 만 반환 한 후에도 잘 작동합니다.GLKViewController (GLKView) glOpenPixels는 iO6 이후에 검은 픽셀을 반환합니다.

나는 preserveBackBuffer에 대해 뭔가를 읽을 수 있지만 성공 GLKView의 또

내 설정 O : 솔루션

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

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

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

가능한 경로? 나는에 glReadPixels를 사용하고

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

쉐이더 였는지를

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

모든 접수 도움이, 감사 후 카메라를 기록 (I없는 작품 않는 여전히 여기에 시도하지만)

답변

0

문서에 따르면 glReadPixels가 아니라 픽셀을 읽어야 할 경우 GLKView의 'snapshot'메서드를 사용해야합니다. '스냅 샷'에 대한 워드 프로세서 :

토론 :이 메소드가 호출 될 때 는, 뷰가 도면 환경을 설정하고 드로잉 메소드를 호출합니다. 그러나보기의 내용을 화면에 표시하는 대신 응용 프로그램에 이미지로 반환합니다. 응용 프로그램이 명시 적으로보기의 내용을 필요로 할 때마다이 메소드를 호출해야합니다. OpenGL ES 기능을 사용하여 기본 프레임 버퍼의 내용을 직접 읽으려고 시도하지 마십시오.

+0

OpenGL에서 프로세스 쉐이더 후 장치 카메라에서 PixelBuffer로 동영상을 녹화하고 있는데, iOS6에서 openGL의 백 버퍼를 다시 활성화하는 방법을 알아야합니다 (iOS5는 완벽하게 작동합니다 ...) – GTSouza