開発環境
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();
}