应用程序因glGetString而崩溃

时间:2011-08-13 00:14:51

标签: iphone ios opengl-es cocos2d-iphone nsstring

我正在运行cocos2d-iphone 1.0.0并遵循this教程将cocos2d用于ARC。不幸的是,每当我尝试将TMX Tiled Map添加到CCLayer时,我都会收到'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:的{​​{1}}部分可能会导致应用程序崩溃。我在NSString *extensionsString = [NSString stringWithCString:glExtensions encoding: NSASCIIStringEncoding];GL_VENDORGL_VERSION甚至GL_RENDERER的日志中也收到了NULL。

回顾一下OpenGLES.framework中的gl.h,向我展示了这个:

glExtensions

其中所有这些都是NULL。

1 个答案:

答案 0 :(得分:4)

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

从glGetString获取NULL通常意味着OpenGL上下文未绑定或未正确创建。你应该检查一下。同时用glGetError检查GL错误。