1

我将 GLKViewController 与 GLKView 一起使用,在 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

接受所有帮助,谢谢,

4

1 回答 1

0

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

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

于 2012-09-25T19:29:17.403 回答