2012-07-26 17 views
9

Transpongo un proyecto de Cocos2D a 2.0.Cocos2D 2.0 - millones de errores de OpenGL

He creado un proyecto en blanco usando la plantilla Cocos2D 2.0 (la plantilla simple sin física) y transferí todos los archivos del proyecto anterior al proyecto en blanco.

También lo he convertido a ARC.

Compilo y no veo errores. Puedo ejecutar la aplicación y parece estar funcionando correctamente, pero tengo estos errores en la consola ...

MyApp[1266:707] cocos2d: animation stopped 
MyApp[1266:707] cocos2d: animation started with frame interval: 60.00 
MyApp[1266:707] cocos2d: surface size: 640x960 
MyApp[1266:707] cocos2d: surface size: 640x960 
MyApp[1266:707] cocos2d: animation stopped 
MyApp[1266:707] cocos2d: animation started with frame interval: 60.00 
MyApp[1266:707] failed to call context 
MyApp[1266:707] cocos2d: surface size: 640x960 
MyApp[1266:707] Failed to make complete framebuffer object 0x8CDD 
OpenGL error 0x0506 in -[CCSprite draw] 532 
OpenGL error 0x0502 in -[CCGLView swapBuffers] 280 
MyApp[1266:707] failed to call context 
MyApp[1266:707] cocos2d: surface size: 640x960 
MyApp[1266:707] Failed to make complete framebuffer object 0x8CDD 
OpenGL error 0x0506 in -[CCSprite draw] 532 
OpenGL error 0x0502 in -[CCGLView swapBuffers] 280 
OpenGL error 0x0506 in -[CCSprite draw] 532 
OpenGL error 0x0502 in -[CCGLView swapBuffers] 280 
OpenGL error 0x0506 in -[CCSprite draw] 532 
OpenGL error 0x0502 in -[CCGLView swapBuffers] 280 
OpenGL error 0x0506 in -[CCSprite draw] 532 
OpenGL error 0x0502 in -[CCGLView swapBuffers] 280 
OpenGL error 0x0506 in -[CCSprite draw] 532 
OpenGL error 0x0502 in -[CCGLView swapBuffers] 280 

Como ya he dicho, este fue creado a partir de una plantilla en blanco.

¿cómo puedo arreglar eso?

+0

Solucioné mismo problema con esta respuesta: http://stackoverflow.com/questions/8990770/failed-to-make-complete-framebuffer-object-8cd6-ios-programmatically-created-o/24657077 # 24657077 – Yossi

Respuesta

15

error OpenGL 0x506 = GL_INVALID_FRAMEBUFFER_OPERATION

diferencia principal entre Cocos2D 2,0 y Cocos2D 1.0 es la versión OpenGLES. Cocos2D 2.0 usa OpenGLES 2.0 y Cocos2D 1.0 usa OpenGLES 1.0.

supongo que es posible que se usa la API que no se encuentra en OpenGLES2.0 que se encuentra en OpenGLES 1.0

Ejemplo: glBegin(), glLineWidth(), etc

Utilice esta función draw:

-(void) draw 
{ 
    [super draw]; 
    ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position); 
    kmGLPushMatrix(); 
    self.world->DrawDebugData();  
    kmGLPopMatrix(); 
} 

lugar de esto:

-(void) draw 
{ 
    glDisable(GL_TEXTURE_2D); 
    glDisableClientState(GL_COLOR_ARRAY); 
    glDisableClientState(GL_TEXTURE_COORD_ARRAY); 

    world->DrawDebugData(); 

    // restore default GL states 
    glEnable(GL_TEXTURE_2D); 
    glEnableClientState(GL_COLOR_ARRAY); 
    glEnableClientState(GL_TEXTURE_COORD_ARRAY); 

} 

también utilizan GLES-Render.h y GLES-Render.m de Cocos2D 2.0

+1

gracias! ¡Eso es! – SpaceDog

+2

muchas gracias por publicar esto, ¡exactamente lo que estaba buscando! – cjm

+3

Acabo de cpied y pegué tu código y eso es todo. Ojalá pudiera votarle un 1000 –