【问题标题】:App crashing because of glGetString由于 glGetString 导致应用程序崩溃
【发布时间】:2011-08-13 00:14:51
【问题描述】:

我正在运行 cocos2d-iphone 1.0.0 并按照 this 教程使用 cocos2d 和 ARC。不幸的是,每当我尝试将 TMX 平铺地图添加到 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:@" "]; }

NSString *extensionsString = [NSString stringWithCString:glExtensions encoding: NSASCIIStringEncoding];encoding: 部分可能导致应用程序崩溃。我的日志中也收到了 GL_VENDORGL_VERSIONGL_RENDERER 甚至 glExtensions 的 NULL。

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

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

其中所有的都是NULL。

【问题讨论】:

  • 顺便说一下,也是用Xcode 4

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


【解决方案1】:

注意:我对 iOS 开发一无所知 :)

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

【讨论】:

  • 感谢您的回复。不幸的是,如果我在导致问题的代码行之后调用 glGetError,应用程序就没有时间返回 glGetError。在返回 NULL 之前请求它...
  • 谢谢!!这实际上是答案。显然,我需要设置一个 EAGLView 并将其附加到我的 CCLayer 的节点函数中。再次感谢您!
  • 您能提供您的代码吗?我遇到了同样的问题。
猜你喜欢
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多