2012-02-15 13 views
6

Cuando configuro un GLKViewController/GLKView para dibujar con CoreImage, a veces aparece el aviso en el título.CoreImage: EAGLContext framebuffer o renderbuffer incorrectamente configurado

La configuración se parece a esto:

_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]; 

tengo subvistas UIKit en el GLKView y parece que cuando agrego/eliminar puntos de vista de alguna manera invalida el contexto temporal. El caso es que (excepto en algunos casos excepcionales, aún tengo que arrinconarme) la próxima actualización puedo dibujar en el contexto sin problemas.

Estoy bien si vuelvo a intentar dibujar si falla, pero ¿cómo puedo saber que el contexto no es válido? ¿Cómo se supone que debo detectarlo o evitar que se invalide?

Respuesta

1

A GLKView configura y administra el búfer de renderizado. Llamando explícitamente a glGenRenderBuffers() y glBindRenderbuffer() está confundiendo la configuración de GLKView.

Cuestiones relacionadas