我正在 iOS 上创建 SCNRenderer 以进行离屏渲染,我不知道为什么我会收到错误消息:
“线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)”
我的代码中唯一的事情就是创建这个“SCNRenderer”。这个函数在 viewDidAppear 中调用:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
openGLContext = EAGLContext(API: .OpenGLES2)
var renderer = SCNRenderer(context: &openGLContext, options: nil)
}
我检查了 openGLContext,它不是 nil
我也检查过,SCNRenderer 在 iOS 8 上可用
rendererWithContext:options:
context: An OpenGL rendering context: either a CGLContextObj reference (in OS X) or an EAGLContext object (in iOS).
您认为我为什么会收到此错误?
最佳答案
更新:这段代码要小得多,而且看起来效果很好:
let renderer = SCNRenderer(context: unsafeBitCast(eaglContext, UnsafeMutablePointer.self), options: nil)
--旧答案如下--
现在我只使用这个变通方法 Objective-C 类。
@import SceneKit;
@interface SCNRenderer (SwiftiOSWorkaround)
+ (instancetype)rendererWithContextObject:(EAGLContext *)eaglContext options:(NSDictionary *)options;
@end
@implementation SCNRenderer (SwiftiOSWorkaround)
+ (instancetype)rendererWithContextObject:(EAGLContext *)eaglContext options:(NSDictionary *)options;
{
return [self rendererWithContext:(__bridge void *)eaglContext options:options];
}
@end
然后您可以使用以下方法从 Swift 创建 SCNRenderer:
var renderer = SCNRenderer(contextObject: openGLContext, options: nil)
关于ios - iOS 上的 SCNRenderer 分配时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27096841/