2012-04-15 8 views
8

Zaimplementowałem GPUImage framework w moim projekcie cocos2d, Framework GPUImage to biblioteka iOS z licencją BSD, która umożliwia stosowanie filtrów przyspieszanych przez GPU i innych efektów do obrazów, wideo z kamer na żywo, i filmy.cocos2d Błąd OpenGL 0x0502 w - [EAGLView swapBuffers]

Podczas wywoływania dowolnego z filtrów GPUImage otrzymuję komunikat o błędzie "błąd cocos2d OpenGL 0x0502 w - [EAGLView swapBuffers]".

Czy masz pojęcie, jaki może być problem w tej sprawie?

Dzięki i pozdrawiam, Prakash.

+0

0x0502 oznacza "GL_INVALID_OPERATION". Czy próbujesz użyć tekstury z GPUImage z cocos2d? Dwa domyślnie będą miały różne konteksty OpenGL ES, więc nie będzie można używać tekstury z jednej w drugiej, chyba że skonfigurujesz współdzielenie między kontekstami. Nie jestem zaznajomiony z cocos2d i jak to robi inicjalizacja kontekstu, ale w jakiś sposób musisz ustawić grupę udziałów pomiędzy kontekstami GPUImage i cocos2d. –

+0

@BradLarson używam tych dwóch linii tylko w mojej klasie coco2d ------ GPUImageToonFilter * stillImageFilter2 = [[GPUImageToonFilter alloc] init]; image = [stillImageFilter2 imageByFilteringImage: image]; ------- po wykonaniu tej linii otrzymuje się ten błąd –

Odpowiedz

1

Nie wiem, co robi twój kod, ale widziałem, że niektóre problemy z buforem swapowym pojawiają się, gdy zmieniają orientację aplikacji z normalnej orientacji. Spróbuj wydrukować widok główny przed i po użyciu Twój kod.

0

Zdarzyło mi się, że mam ten sam problem. Znalazłem następujący post użyteczne: iOS and multiple OpenGL views

W moim przypadku, pliki cocos2d nie mają niezbędnych poleceń "setCurrentContext", więc dodałem go do CCEAGLView-ios.mm. Rozwiązuje mój problem.

(void) layoutSubviews 
{ 
[renderer_ resizeFromLayer:(CAEAGLLayer*)self.layer]; 
size_ = [renderer_ backingSize]; 

[EAGLContext setCurrentContext: context_]; 
cocos2d::Size size; 
size.width = size_.width; 
size.height = size_.height; 

cocos2d::Director::getInstance()->drawScene(); 
} 
Powiązane problemy