9

Cocos2D プロジェクトを 2.0 に移植しています。

Cocos2D 2.0 テンプレート (物理演算を含まない単純なテンプレート) を使用して空のプロジェクトを作成し、すべてのファイルを古いプロジェクトから空のプロジェクトに転送しました。

それもARCに変換しました。

コンパイルしましたが、エラーは表示されません。アプリを実行すると、正しく実行されているように見えますが、コンソールにこれらのエラーが表示されます...

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

私が言ったように、これは空白のテンプレートから作成されました.

どうすれば修正できますか?

4

1 に答える 1

15

OpenGL エラー 0x506 = GL_INVALID_FRAMEBUFFER_OPERATION

Cocos2D 2.0 と Cocos2D 1.0 の主な違いは OpenGLES のバージョンです。Cocos2D 2.0 は OpenGLES 2.0 を使用し、Cocos2D 1.0 は OpenGLES 1.0 を使用します。

OpenGLES 1.0 にある、OpenGLES2.0 にはない API を使用している可能性があります。

例:GLBegin()、GLLineWidth()など

この描画機能を使用します。

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

これの代わりに:

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

}

Cocos2D 2.0 の GLES-Render.h と GLES-Render.m も使用します。

于 2012-07-26T06:16:33.903 に答える