应用程序崩溃,因为glGetString

我正在运行cocos2d-iphone 1.0.0,并按照本教程的说明使用cocos2d。 不幸的是,每当我尝试向CCLayer添加TMX Tiled Map时,我都会遇到“SIGABRT”崩溃错误。 我把这个问题追溯到-(BOOL)checkForGLExtension:(NSString *)searchName ,甚至进一步在这个函数内NSString *extensionsString = [NSString stringWithCString:glExtensions encoding: NSASCIIStringEncoding];

这是checkForGLExtension函数:

 - (BOOL) checkForGLExtension:(NSString *)searchName { // For best results, extensionsNames should be stored in your renderer so that it does not // need to be recreated on each invocation. NSLog(@"%@", glExtensions); NSString *extensionsString = [NSString stringWithCString:glExtensions encoding: NSASCIIStringEncoding]; NSLog(@"%@", extensionsString); NSArray *extensionsNames = [extensionsString componentsSeparatedByString:@" "]; } 

encoding: NSString *extensionsString = [NSString stringWithCString:glExtensions encoding: NSASCIIStringEncoding];一部分NSString *extensionsString = [NSString stringWithCString:glExtensions encoding: NSASCIIStringEncoding]; 很可能使应用程序崩溃。 我在我的日志中也收到GL_VENDORGL_VERSIONGL_RENDERER ,甚至是glExtensions

回顾OpenGLES.framework中的gl.h显示了这一点:

 /* StringName */ #define GL_VENDOR 0x1F00 #define GL_RENDERER 0x1F01 #define GL_VERSION 0x1F02 #define GL_EXTENSIONS 0x1F03 

其中所有这些都是NULL。

注意:我不知道iOS开发:)

从glGetString中获取NULL通常意味着OpenGL上下文没有绑定或创build不正确。 你应该检查一下。 还用glGetError检查GL错误。