2012-02-15 9 views
6

Kiedy ustawiam GLKViewController/GLKView do rysowania z CoreImage, czasami dostaję informację w tytule.CoreImage: EAGLContext framebuffer lub renderbuffer niepoprawnie skonfigurowany

Konfiguracja wygląda tak:

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

mam UIKit subviews w GLKView i wydaje się, że kiedy dodać/usunąć widoki jakoś unieważnić kontekstu czasowego. Chodzi o to, że (z wyjątkiem rzadkich przypadków wciąż potrzebuję kąta) następna aktualizacja mogę wyciągnąć w kontekście bez problemów.

Jestem w porządku, aby spróbować ponownie rysować, jeśli się nie powiedzie, ale skąd mogę wiedzieć, że kontekst jest nieprawidłowy? Jak mam to wykryć lub zapobiec jego unieważnieniu?

Odpowiedz

1

A GLKView konfiguruje i zarządza buforem renderowania. Wyraźnie nazywając glGenRenderBuffers() i glBindRenderbuffer() mylisz konfigurację GLKView.

Powiązane problemy