2012-02-15 8 views
6

Quando ho impostato GLKViewController/GLKView per il disegno con CoreImage, talvolta ricevo l'avviso nel titolo.CoreImage: framebuffer EAGBontext o renderbuffer configurati in modo errato

La configurazione assomiglia a questo:

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

ho subviews UIKit nel GLKView e sembra che quando aggiungo/rimuovere le viste in qualche modo inficiare temporaneamente il contesto. La cosa è (tranne in alcuni rari casi ho ancora bisogno di angolo) il prossimo aggiornamento che posso disegnare nel contesto senza problemi.

Sono ok per riprovare a disegnare se fallisce ma come posso sapere che il contesto non è valido? Come posso rilevarlo o impedire che venga invalidato?

risposta

1

A GLKView imposta e gestisce il buffer di rendering. Chiamando esplicitamente glGenRenderBuffers() e glBindRenderbuffer() si confonde la configurazione di GLKView.