我正在为屏幕外呈现在iOS上创建iOS,我不知道为什么我会说:
线程1: EXC_BAD_ACCESS(code=1,address=0x0)
在我的代码中,唯一的事情就是创建这个"SCNRenderer“。此函数在viewDidAppear中调用:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
openGLContext = EAGLContext(API: .OpenGLES2)
var renderer = SCNRenderer(context: &openGLContext, options: nil)
}我查了openGLContext,不是零
我也查过了,SCNRenderer在iOS 8上可用
rendererWithContext:选项: 上下文: OpenGL呈现上下文: CGLContextObj引用(在OS中)或EAGLContext对象(在iOS中)。
你觉得我为什么会犯这个错误?
发布于 2015-02-20 07:51:13
更新:这段代码要小得多,并且看起来工作得很好:
let renderer = SCNRenderer(context: unsafeBitCast(eaglContext, UnsafeMutablePointer.self), options: nil)-旧的答案如下--
现在,我只是使用这个解决方案Objective类。
@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)发布于 2014-11-24 10:31:43
您不需要传递openGLContext的地址。它是指向EAGLContext对象的指针。
var renderer = SCNRenderer(context: openGLContext, options: nil)
https://stackoverflow.com/questions/27096841
复制相似问题