2012-04-15 12 views
8

he implementado GPUImage framework en mi proyecto cocos2d, el marco GPUImage es una biblioteca de IOS de licencia BSD que permite aplicar filtros acelerados por la GPU y otros efectos a las imágenes, la cámara de vídeo en directo, y películas.cocos2d 0x0502 error de OpenGL en - [EAGLView swapBuffers]

Cuando llamo a cualquiera de los filtros GPUImage, aparece el mensaje "cocos2d OpenGL error 0x0502 en - [EAGLView swapBuffers]".

¿Tiene alguna idea de lo que podría ser el problema en ese caso?

Gracias y saludos, Prakash.

+0

0x0502 significa 'GL_INVALID_OPERATION'. ¿Estás tratando de usar una textura de GPUImage con cocos2d? Los dos tendrán de forma predeterminada diferentes contextos de OpenGL ES, por lo que no podrá usar una textura de uno en el otro, a menos que configure el uso compartido entre los contextos. No estoy familiarizado con cocos2d y cómo funciona su inicialización de contexto, pero de alguna manera tendrá que configurar un grupo compartido entre los contextos GPUImage y cocos2d. –

+0

@BradLarson estoy usando esta línea solo en mi clase coco2d ------ GPUImageToonFilter * stillImageFilter2 = [[GPUImageToonFilter alloc] init]; image = [stillImageFilter2 imageByFilteringImage: image]; ------- después de ejecutar esta línea y obtener este error –

Respuesta

1

No sé lo que está haciendo su código, pero lo que he visto es que algunos problemas de buffer de intercambio de tiempo vienen si cambian la orientación de la aplicación de la orientación normal. Intente imprimir el tamaño de la vista principal antes y después de usar tu codigo.

0

Pasé a tener el mismo problema. He encontrado el siguiente post útil: iOS and multiple OpenGL views

En mi caso, los archivos Cocos2d no tienen necesario "setCurrentContext" comandos, por lo que añade en CCEAGLView-ios.mm. Soluciona mi problema

(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(); 
}