Posted at

cocos2d-x 3.3 rc0 で OpenGL error 0x0506

More than 3 years have passed since last update.


開発環境

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