0

我有一个大问题,我找不到任何解决方案,所以这就是我寻求帮助的原因。

我正在开发一个包含多个小应用程序的项目,其中大部分是在 UIKit 中制作的,其中大部分是在一些辅助函数的帮助下在 openGL ES 1.0/1.1(不确定)中制作的。我必须开发一些需要碰撞检测和动画的游戏,所以我认为 cocos2d 就可以了。

我设法导入 cocos2d 2.0 并使其正常运行,从菜单中选择游戏将启动导演和 cocos2d 场景,当我想退出它时,我调用 [_director end] 并返回菜单,这也是在 openGL ES 中。

问题是,有时,它主要是随机发生的,我在导演结束调用时收到 0x500 GL 错误,导致菜单变成白色,但仍然响应触摸。

这是我尝试解决此问题的第三天。这是我尝试过的: - 由于 cocos2d 2.0 使用 open GL ES 2.0 而我的菜单是 GL ES 1.0,我认为这是它们之间的冲突,所以我使用了 cocos2d 1.x,但这带来了更多问题,而且它不应该发生冲突当 cocos2d 场景出现在屏幕上时,菜单的 glview 会暂停。

  • 当我每次启动 cocos2d 时启用 cocos2d_debug 时,我也会收到这些错误。

    cocos2d:表面尺寸:0x0

    cocos2d:无法使完整的帧缓冲区对象0x0

我从字面上尝试了我在网络上所能做的一切。

这是我用来运行/关闭 cocos2d 的代码

// start cocos2d
    _director = (CCDirectorIOS*)[CCDirector sharedDirector];
    CCGLView *glView = [CCGLView viewWithFrame:CGRectMake(0, 0, 320, 480)
                                     pixelFormat:kEAGLColorFormatRGBA8
                                     depthFormat:0 /* GL_DEPTH_COMPONENT24_OES */               
                              preserveBackbuffer:NO                                             
                                      sharegroup:nil                                                
                                   multiSampling:NO                                         
                                 numberOfSamples:0
   [_director setView:glView];
   [_director setDelegate:self];
   [[_delegate glViewAccess] addSubview:glView]; // the glviewacces is the app menu select view


//stop cocos2d
   [_director end];

   // this call restarts the app menu select view update and draw functions and 
   // releases the current instance of the object used to start cocos2d, 
   // releasing the cocos2d scene as well
   [_delegate unloadApplication]; 
4

1 回答 1

0

首先,不要混合使用 OpenGL v1.1 和 2.0 代码。小猫死。

其次,不要调用[director end]——真的没必要每次都完全关闭cocos2d,而只是简单的运行stopAnimationstartAnimation挂起和恢复cocos2d。呼叫结束并没有经过很好的测试,如果这样做可能会出现许多问题。

如果这不能解决问题,请在您的应用程序中发布您如何设置和关闭 cocos2d 的代码以获得更多帮助。

于 2013-03-14T11:37:40.090 回答