当我设置一个GLKViewController/GLKView以便与CoreImage一起绘图时,有时会在标题中得到通知。

设置如下所示:

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

self.view.context = _context;
self.view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
self.view.backgroundColor = UIColor.blackColor;
self.view.contentScaleFactor = UIScreen.mainScreen.scale;

glGenRenderbuffers(1, &_render_buffer);
glBindRenderbuffer(GL_RENDERBUFFER, _render_buffer);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);

_core_image_context = [CIContext contextWithEAGLContext: _context];

[EAGLContext setCurrentContext:_context];

我在GLKView中有UIKit subview ,似乎当我添加/删除 View 时,它以某种方式暂时使上下文无效。
问题是(除了极少数情况下,我仍然需要处理),我可以在上下文中绘制下一个更新而不会遇到麻烦。

我可以重试绘图,但是失败了,但是我怎么知道上下文无效呢?我应该如何检测它或防止其无效?

最佳答案

GLKView设置并管理渲染缓冲区。通过显式调用glGenRenderBuffers()glBindRenderbuffer(),您会混淆GLKView的配置。

关于opengl-es - CoreImage : EAGLContext framebuffer or renderbuffer incorrectly configured,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9291921/

10-09 12:30