OpenGL error 0x0501 CCTexture2D.cpp initWithMipmaps 647

环境 : Xcode iOS
使用场景:
app启动后先运行几个page页面,通过页面的按钮进入游戏场景,第一次进入场景的ViewController不会报错,当返回到app页面然后再进入场景ViewController后报错。
错误信息:
OpenGL error 0x0501 in /Users/jenkins/Work/CocosPackageAuto/CocosFramework/cocos2d-x/cocos/renderer/CCTexture2D.cpp initWithMipmaps 647

已经在ViewController中加入了:
-(void) viewDidAppear:(BOOL)animated{
NSLog(@“View Did Appear…”);
cocos2d::Director::getInstance()->resume();
cocos2d::Director::getInstance()->startAnimation();
}

  • (void)viewWillDisappear:(BOOL)animated{
    NSLog(@“View will Disappear…”);
    cocos2d::Director::getInstance()->pause();
    cocos2d::Director::getInstance()->stopAnimation();
    }

我是在- (void)viewDidLoad中创建OpenGL View 并加入当前ViewController的,每次进入ViewController都会执行viewDidLoad方法。

问题的原因在于每次都进入ViewController后都执行viewDidLoad方法创建OpenGL View 相关代码
有没有什么方法在ViewController退出后彻底销毁cocos相关对象,使每次进入ViewController都重新创建OpenGLView 而不报错?

viewDidLoad 方法详细如下:

  • (void)viewDidLoad {
    NSLog(@“View Did Load…”);
    ;

    cocos2d::Application *app = cocos2d::Application::getInstance();
    app -> initGLContextAttrs();
    cocos2d::GLViewImpl::convertAttrs();

    window = initWithFrame: bounds]];

    CGRect windowBounds = UIScreen mainScreen ].applicationFrame;//= ;
    // CCLOG("%f %f %f %f", windowBounds.origin.x, windowBounds.origin.y, windowBounds.size.width, windowBounds.size.height);

    CGRect customBounds = CGRectMake(windowBounds.origin.x, windowBounds.origin.y, windowBounds.size.width, windowBounds.size.height);
    // Init the CCEAGLView
    CCEAGLView eaglView = [CCEAGLView viewWithFrame: customBounds
    pixelFormat: (__bridge NSString
    )cocos2d::GLViewImpl::_pixelFormat
    depthFormat: cocos2d::GLViewImpl::_depthFormat
    preserveBackbuffer: NO
    sharegroup: nil
    multiSampling: NO
    numberOfSamples: 0 ];

    ;

    NSLog(@“view %@”, self.view);
    eaglView.tag = 100;

    ;

    setStatusBarHidden:false];

    cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView((__bridge void *) eaglView);

    cocos2d::Director::getInstance()->setOpenGLView(glview);
    app->run();

}

:14: :14: :14: