cocos2d-x 3.3 rc0 で OpenGL error 0x0506

  • 12
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

開発環境

iOS向けビルド
Xcode 6.1
cocos2d-x 3.3 rc0

エラー内容

cocos2d-xのOpenGLからUIKitのViewControllerに遷移し、再度Cocos2d-xに戻った際に発生。(広告動画再生など)
その後、アプリがフリーズしたようになる。
実際にはログに下記のOpenGL errorが吐かれ続ける。

cocos2d: OpenGL error 0x0506 in /Users/unkodaisuki/lib/cocos2d-x-3.3rc0/projects/MyApp/cocos2d/cocos/renderer/CCTextureAtlas.cpp drawNumberOfQuads 689

OpenGL error 0x0506 in -[CCEAGLView swapBuffers] 324

エラーコード 0x0506 はOpenGLのエラーコードリファレンスを見ると下記のように書いてある。

GL_INVALID_FRAMEBUFFER_OPERATION​, 0x0506
Given when doing anything that would attempt to read from or write/render to a framebuffer that is not complete.

対処法

下記を追加。
これまでは、特にこの記述がなくても問題なく動作していた。
考えられる契機としては、cocos2d-xのバージョンアップか、Xcodeのバージョンアップ。

RootViewController.mm

-(void)viewWillAppear:(BOOL)animated
{
    cocos2d::Director::getInstance()->resume();
    cocos2d::Director::getInstance()->startAnimation();
}

- (void)viewWillDisappear:(BOOL)animated
{
    cocos2d::Director::getInstance()->pause();
    cocos2d::Director::getInstance()->stopAnimation();
}