我正在使用带有GLKView的GLKViewController,在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
接受所有帮助,谢谢,
答案 0 :(得分:0)
根据文档,如果需要读取像素而不是glReadPixels,则应使用GLKView的“快照”方法。来自关于'快照'的文档:
讨论: 调用此方法时,视图将设置绘图环境并调用绘图方法。但是,它们不是在屏幕上显示视图的内容,而是作为图像返回到您的应用程序。只要您的应用程序明确需要视图的内容,就应该调用此方法;永远不要尝试使用OpenGL ES函数直接读取底层帧缓冲区的内容。