首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCNRenderer on iOS在分配时出错

SCNRenderer on iOS在分配时出错
EN

Stack Overflow用户
提问于 2014-11-24 02:01:37
回答 2查看 627关注 0票数 0

我正在为屏幕外呈现在iOS上创建iOS,我不知道为什么我会说:

线程1: EXC_BAD_ACCESS(code=1,address=0x0)

在我的代码中,唯一的事情就是创建这个"SCNRenderer“。此函数在viewDidAppear中调用:

代码语言:javascript
复制
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中)。

你觉得我为什么会犯这个错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-20 07:51:13

更新:这段代码要小得多,并且看起来工作得很好:

代码语言:javascript
复制
let renderer = SCNRenderer(context: unsafeBitCast(eaglContext, UnsafeMutablePointer.self), options: nil)

-旧的答案如下--

现在,我只是使用这个解决方案Objective类。

代码语言:javascript
复制
@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:

代码语言:javascript
复制
var renderer = SCNRenderer(contextObject: openGLContext, options: nil)
票数 1
EN

Stack Overflow用户

发布于 2014-11-24 10:31:43

您不需要传递openGLContext的地址。它是指向EAGLContext对象的指针。

var renderer = SCNRenderer(context: openGLContext, options: nil)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27096841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档